習題1:監控網卡
要求:每10分鐘檢測一次指定網卡流量;如果網卡流量爲0,則重啓網卡!(使用cron任務計劃!)
參考答案:
#!/bin/bash # date:2018年3月21日 LANG=en n1=`sar -n DEV 1 60|grep ens33|grep -i average|awk '{print $5}'|sed 's/\.//g'` n2=`sar -n DEV 1 60|grep ens33|grep -i average|awk '{print $6}'|sed 's/\.//g'` if [ $n1 == "000" ] && [ $n2 == "000" ] then ifdown ens33 ifup ens33 fi
習題2:判斷日期是否合法
要求:用shell腳本判斷輸入的日期是否合法。就是判斷日期是都是真實的日期,比如20170110就是合法日期,20171332就不合法。
參考答案:
#!/bin/bash # date:2018年3月21日 if [ $# -ne 1 ] || [ ${#1} -ne 8 ] then echo "Usage: bash $0 yyyymmdd" exit 1 fi date=$1 year=${date:0:4} month=${date:4:2} day=${date:6:2} if echo $day|grep -q '^0' then day=`echo $day|sed 's/^0//'` fi if cal $month $year > /dev/null 2> /dev/null then daym=`cal $month $year|grep -v "$year"|grep -w "$day"` if [ "$daym" != "" ] then echo "ok" else echo "Error:Please input a right date" exit 1 fi else echo "Error: Please input a right date" exit 1 fi
習題3:檢查服務
要求:先判斷是否安裝http和mysql,沒有安裝進行安裝,安裝了檢查是否啓動服務,若沒有啓動則需要啓動服務。
參考答案:
#!/bin/bash # date:2018年3月21日 if_install() { n=`rpm -qa|grep -cw "$1"` if [ $n -eq 0 ] then echo "$1 not install." else echo "$1 installed." fi } if_install httpd if_install mysql chk_ser() { p_n=`ps -C "$1" --no-heading |wc -l` if [ $p_n -eq 0 ];then echo "$1 not start." systemctl start $1 else echo "$1 started." fi } chk_ser httpd chk_ser mysqld
習題4:3位隨機數字
要求:寫一個腳本產生隨機3位的數字,並且可以根據用戶的輸入參數來判斷輸出幾組。 比如,腳本名字爲 number3.sh。
執行方法:
bash number3.sh
直接產生一組3位數字。
bash number3.sh 10
插上10組3位數字。
思路: 可以使用echo $RANDOM獲取一個隨機數字,然後再除以10,取餘獲取0-9隨機數字,三次運算獲得一組。
參考答案:
#!/bin/bash # date:2018年3月21日 get_num(){ n=$[$RANDOM%10] echo $n } get_numbers(){ for i in 1 2 3 do a[$i]=`get_num` done echo "${a[*]}" } if [ -n "$1" ];then m=`echo $1|sed 's/[0-9]//g'` if [ -n "$m" ];then echo "Usage: bash $0 n, n is a number." exit 1 else for i in `seq 1 $1` do get_numbers done fi else get_numbers fi
習題5:三行變一行
參考答案: