操作系統: RHEL7.x 或CentOS 7.x 最小化安裝 配置好固定的IP,能訪問互聯網 配置好yum源(yum repolist 可以查看yum源) 本地光碟 掛載光碟,開機自動掛載 vim + /etc/fstable /dev/sr0 /mnt iso9660 defaults 0 0 ...
操作系統:
RHEL7.x 或CentOS 7.x
- 最小化安裝
- 配置好固定的IP,能訪問互聯網
- 配置好yum源(yum repolist 可以查看yum源)
- 本地光碟
- 掛載光碟,開機自動掛載
- vim + /etc/fstable
- /dev/sr0 /mnt iso9660 defaults 0 0
- 創建掛載點目錄:
- mkdir /media/cdrom
- 掛載:mount -a
- 配置yum源:
- yum-config-manger --add-repo=file:/// media/cdrom
- echo "gpgcheck = 0" >> /etc/yum.repos.d/media_cdrom.repo
- 掛載光碟,開機自動掛載
- EPEL
- aliyun sohu 中科大 清華 網易
- 本地光碟
開發環境:vim
查看系統shell類型:
[root@template ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
查看當前預設shell:
[root@template ~]# echo $SHELL
/bin/bash
快速如何快速生成腳本開頭的版本版權註釋信息
[root@template ~]# cat ~/.vimrc
autocmd BufNewFile *.go,*.py,*.cc,*.sh,*.java exec ":call SetTitle()"
func SetTitle()
if expand("%:e") == 'sh'
call setline(1,"#!/bin/bash")
call setline(2,"#########################")
call setline(3,"#File name:".expand("%"))
call setline(4,"#Version:v1.0")
call setline(5,"#Email:[email protected]")
call setline(6,"#Created time:".strftime("%F %T"))
call setline(7,"#Description:")
call setline(8,"#########################")
call setline(9,"")
endif
endfunc
修改Tab縮進
在/etc/vim/下有兩個文件,分別為vimrc 和vimrc.tiny
在vimrc文件中加入:set tabstop=4
流程式控制制與判斷練習:
1、ping主機測試,查看主機是否存活
[root@template chap04]# cat ping.sh
#!/bin/bash
#########################
#File name:ping.sh
#Version:v1.0
#Email:[email protected]
#Created time:2023-03-23 17:32:18
#Description:
#########################
read -p "please enter your host:" host
if ping -c2 $host &> /dev/null
then
echo "$host is running"
else
echo "$host is down"
fi
2、判斷一個用戶是否存在
[root@template chap04]# cat user.sh
#!/bin/bash
#########################
#File name:user.sh
#Version:v1.0
#Email:[email protected]
#Created time:2023-03-23 17:45:03
#Description:
#########################
read -p "please enter a username:" username
if id $username &> /dev/null
then
echo "$username is exist"
else
echo " $username is not exist "
fi
3、判斷當前內核主版本是否為3,且次版本是否大於10
[root@template chap04]# cat sys.sh
#!/bin/bash
#########################
#File name:sys.sh
#Version:v1.0
#Email:[email protected]
#Created time:2023-03-23 17:52:56
#Description:
main_version=`uname -r | awk -F . '{print $1 }'`
minor_version=`uname -r | awk -F . '{print $2}'`
if [ "$main_version" -eq 3 ] && [ "$minor_version" -ge 10 ]
then
echo "主版本是:$main_version 次版本是:$minor_version"
else
echo "不滿足條件,此系統的主版本是:$main_version 次版本是:$minor_version"
fi
4、判斷vsftpd軟體包是否安裝,如果沒有則自動安裝
#!/bin/bash
#########################
#File name:isvsftp.sh
#Version:v1.0
#Email:[email protected]
#Created time:2023-03-23 18:05:56
#Description:
#########################
if rpm -qa | grep vsftpd &> /dev/null
then
echo "vsftp is exist"
else
echo "vsftp is not exist"
read -p "please enter your choice:" choice
if [ $choice -eq 1 ]
then
yum install vsftpd -y &> /dev/null
else
echo " break and uninstall"
fi
fi
# 測試結果:最初環境沒有安裝,選擇時隨機輸入,最後選擇安裝,最後一次測試檢查是否安裝成
[root@template chap04]# ./isvsftp.sh
vsftp is not exist
please enter your choice:2
break and uninstall
[root@template chap04]# ./isvsftp.sh
vsftp is not exist
please enter your choice:1
[root@template chap04]# ./isvsftp.sh
vsftp is exist
5、判斷httpd是否運行
# 也不算完整:先檢測是否安裝htppd.service此軟體,註意centos7版本中自帶一個httpd-xxx的工具,所以在寫服務時最好加上httpd.service,程式流程:如果包存在,直接輸出active,如果不存在就選擇是否安裝
[root@template chap04]# cat httpd.sh
#!/bin/bash
#########################
#File name:httpd.sh
#Version:v1.0
#Email:[email protected]
#Created time:2023-03-23 18:20:59
#Description:
#########################
if rpm -qa | grep httpd.service &> /dev/null
then
echo "system `systemctl is-active httpd`"
else
echo "httpd is uninstall"
read -p " please enter your choice : " choice
if [ $choice -eq 1 ]
then
yum install httpd -y &> /dev/null
systemctl restart httpd
else
echo " break and uninstall"
fi
fi
6、判斷指定的主機是否能ping通,必須使用$1變數
[root@template chap04]# cat ping2.sh
#!/bin/bash
#########################
#File name:ping2.sh
#Version:v1.0
#Email:[email protected]
#Created time:2023-03-23 18:55:21
#Description:
#########################
if ping -c1 $1 &> /dev/null
then
echo "$1 is runing"
else
echo "$1 is dead"
fi
[root@template chap04]# ./ping2.sh 192.168.11.10
192.168.11.10 is runing
[root@template chap04]# ./ping2.sh baidu.com
baidu.com is runing
7、報警腳本,要求如下
根分區剩餘空間小於20%
記憶體已用空間大於80%
向用戶alice發送告警郵件
配合crond每5分鐘檢查一次
yum install mailx -y &> /dev/null
#!/bin/bash
total_mem=$(free -m | tr -s " " | cut -d " " -f 2 | head -2 | tail -1)
used_mem=$(free -m | tr -s " " | cut -d " " -f 3 | head -2 | tail -1)
used_memper=$(echo "scale=2;$used_mem/$total_mem*100" | bc)
total_root=$(df | grep "/"$ |tr -s " " | cut -d " " -f 2)
used_root=$(df | grep "/"$ |tr -s " " | cut -d " " -f 4)
free_rootper=$(echo "scale=2;$used_root/$total_root*100" | bc)
v1=$(echo "used_memper > 80" | bc)
v2=$(echo "free_rootper < 20" | bc)
if [ $v1 -eq 1 ];then
echo "記憶體已用空間大於80%" | mail -s "警告信息" alice
elif [ $v2 -eq 1 ];then
echo "根分區剩餘空間小於20%" | mail -s "警告信息" alice
else
echo "正常使用"
fi
8、判斷用戶輸入的是否是數字,如果是數字判斷該數字是否大於10
[root@template chap04]# cat num.sh
#!/bin/bash
read -p "please input a num:" num
if echo " $num" | grep " [ 0-9 ]" &> /dev/null
then
if [ $num -gt 10 ]
then
echo "$num is more than 10"
else
echo "$num is less than 10"
fi
else
echo "input a num!!!"
fi
9、計算用戶輸入的任意兩個整數的和、差、乘積、商、餘數
a=$1
b=$2
if [ $# -eq 2 ]
then
if [[ "$a" =~ ^[0-9]*$ && "$b" =~ ^[0-9]*$ ]]
then
echo "a、b Is an integer"
echo a+b=$((a+b))
echo a-b=$((a-b))
echo a*b=$((a*b))
echo a/b=$((a/b))
echo a%b=$((a%b))
else
echo "a,b Is not an integer"
exit 0
fi
else
echo "The number of parameters is 2"
exit 0
fi
作者:ChAn
出處:http://www.cnblogs.com/sre-chan/
-------------------------------------------
個性簽名:今天做了別人不想做的事,明天你就做得到別人做不到的事,嘗試你都不敢,你拿什麼贏!
如果覺得這篇文章對你有小小的幫助的話,記得在右下角點個“推薦”哦,博主在此感謝!