案例1:編寫一鍵部署軟件腳本 案例2:啓動腳本 案例3:編寫監控腳本 案例4:編寫安全檢測腳本 案例5:編寫進度顯示腳本
1 案例1:編寫一鍵部署軟件腳本
1.1 問題html
本案例要求編寫腳本實現一鍵部署Nginx軟件(Web服務器):nginx
一鍵源碼安裝Nginx軟件 腳本自動安裝相關軟件的依賴包 腳本自動判斷yum是否可用
1.2 步驟vim
實現此案例須要按照以下步驟進行。安全
步驟一:準備工做bash
1)判斷yum源是否可用服務器
經過yum repolist查看軟件包數量是否大於0:ssh
[root@svr5 ~]# yum repolist [root@svr5 ~]# yum repolist | awk '/repolist/{print $2}' [root@svr5 ~]# yum repolist | awk '/repolist/{print $2}' |sed 's/,//' [root@svr5 ~]# N=$(yum repolist | awk '/repolist/{print $2}' |sed 's/,//') [root@svr5 ~]# [ $N –le 0 ] && echo 'yum 不可用'
2)依賴包ide
源碼安裝Nginx須要提早安裝依賴包軟件gcc,openssl-devel,pcre-devel性能
步驟二:編寫腳本測試
1)參考腳本內容以下:
[root@svr5 ~]# vim test.sh #!/bin/bash N=$(yum repolist | awk '/repolist/{print $2}' | sed 's/,//') if [ $N -le 0 ];then echo "yum 不可用" exit fi yum -y install gcc openssl-devel pcre-devel tar -xf nginx-1.12.2.tar.gz cd nginx-1.12.2 ./configure make make install
2)確認安裝效果
Nginx默認安裝路徑爲/usr/local/nginx,該目錄下會提供4個子目錄,分別以下:
/usr/local/nginx/conf 配置文件目錄
/usr/local/nginx/html 網站頁面目錄
/usr/local/nginx/logs Nginx日誌目錄
/usr/local/nginx/sbin 主程序目錄
主程序命令參數:
[root@svr5 ~]# /usr/local/nginx/sbin/nginx //啓動服務 [root@svr5 ~]# /usr/local/nginx/sbin/nginx -s stop //關閉服務 [root@svr5 ~]# /usr/local/nginx/sbin/nginx -V //查看軟件信息
2 案例2:啓動腳本
2.1 問題
本案例要求編寫Ngin啓動腳本,要求以下:
腳本支持start、stop、restart、status 腳本支持報錯提示 腳本具備判斷是否已經開啓或關閉的功能
2.2 步驟
實現此案例須要按照以下步驟進行。
步驟一:編寫腳本
腳本經過位置變量$1讀取用戶的操做指令,判斷是start、stop、restart仍是status。
netstat命令能夠查看系統中啓動的端口信息,該命令經常使用選項以下:
-n以數字格式顯示端口號
-t顯示TCP鏈接的端口
-u顯示UDP鏈接的端口
-l顯示服務正在監聽的端口信息,如httpd啓動後,會一直監聽80端口
-p顯示監聽端口的服務名稱是什麼(也就是程序名稱)
1)參考腳本內容以下:
[root@svr5 ~]# vim test.sh #!/bin/bash case $1 in start) /usr/local/nginx/sbin/nginx;; stop) /usr/local/nginx/sbin/nginx -s stop;; restart) /usr/local/nginx/sbin/nginx -s stop /usr/local/nignx/sbin/nginx;; status) netstat -ntulp |grep -q nginx if [ $? -eq 0 ];then echo 服務已啓動 else echo 服務未啓動 fi;; *) echo Error;; esac
2)執行測試腳本:
[root@svr5 ~]# ./test.sh start [root@svr5 ~]# ./test.sh stop [root@svr5 ~]# ./test.sh status [root@svr5 ~]# ./test.sh xyz
3 案例3:編寫監控腳本
3.1 問題
本案例要求編寫腳本,實現計算機各個性能數據監控的功能,具體監控項目要求以下:
CPU負載 網卡流量 內存剩餘容量 磁盤剩餘容量 計算機帳戶數量 當前登陸帳戶數量 計算機當前開啓的進程數量 本機已安裝的軟件包數量
3.2 步驟
實現此案例須要按照以下步驟進行。
步驟一:準備工做
1)查看性能數據的命令
[root@svr5 ~]# uptime //查看CPU負載 [root@svr5 ~]# ifconfig eth0 //查看網卡流量 [root@svr5 ~]# free //查看內存信息 [root@svr5 ~]# df //查看磁盤空間 [root@svr5 ~]# wc -l /etc/passwd //查看計算機帳戶數量 [root@svr5 ~]# who |wc -l //查看登陸帳戶數量 [root@svr5 ~]# rpm -qa |wc -l //查看已安裝軟件包數量
步驟二:編寫參考腳本
1)腳本內容以下:
[root@svr5 ~]# vim test.sh #!/bin/bash ip=`ifconfig eth0 | awk '/inet /{print $2}'` echo "本地IP地址是:"$ip cpu=`uptime | awk '{print $NF}'` #awk中NF爲當前行的列數,$NF是最後一列 echo "本機CPU最近15分鐘的負載是:"$cpu net_in=`ifconfig eth0 | awk '/RX p/{print $5}'` echo "入站網卡流量爲:"$net_in net_out=`ifconfig eth0 | awk '/TX p/{print $5}'` echo "出站網卡流量爲:"$net_out mem=`free | awk '/Mem/{print $4}'` echo "內存剩餘容量爲:"$mem disk=`df | awk '/\/$/{print $4}'` echo "根分區剩餘容量爲:"$disk user=`cat /etc/passwd |wc -l` echo "本地帳戶數量爲:"$user login=`who | wc -l` echo "當前登錄計算機的帳戶數量爲:"$login process=`ps aux | wc -l` echo "當前計算機啓動的進程數量爲:"$process soft=`rpm -qa | wc -l` echo "當前計算機已安裝的軟件數量爲:"$soft
4 案例4:編寫安全檢測腳本
4.1 問題
本案例要求編寫腳本,防止遠程ssh暴力破解密碼,具體監控項目要求以下:
檢測ssh登陸日誌,若是遠程登錄帳號名錯誤3次,則屏蔽遠程主機的IP 檢測ssh登陸日誌,若是遠程登錄密碼錯誤3次,則屏蔽遠程主機的IP
4.2 步驟
實現此案例須要按照以下步驟進行。
步驟一:準備工做
1)過濾賬戶名失敗的命令(登錄日誌文件爲/var/log/secure)
[root@svr5 ~]# awk '/Invalid user/{print $10}' /var/log/secure
2)過濾密碼失敗的命令
[root@svr5 ~]# awk '/Failed password/{print $11}' /var/log/secure
步驟二:編寫參考腳本
1)腳本內容以下:
[root@svr5 ~]# vim test.sh #!/bin/bash awk '/Failed password/{print $11}' /var/log/secure | awk '{ip[$1]++}END{for(i in ip){print ip[i],i}}' | awk '$1>3{print $2}' awk '/Invalid user/{print $10}' /var/log/secure | awk '{ip[$1]++}END{for(i in ip){print ip[i],i}}' | awk '$1>3{print $2}'
5 案例5:編寫進度顯示腳本
5.1 問題
本案例要求編寫腳本,實現帶進程顯示的複製腳本,具體要求以下:
默認Linux的cp命令不具備進度顯示 咱們須要本身編寫腳本實現進度顯示 可使用進度條的方式,或者顯示百分比的方式
5.2 步驟
實現此案例須要按照以下步驟進行。
步驟一:編寫參考腳本
1)腳本內容以下:
[root@svr5 ~]# vim test.sh #!/bin/bash jindu(){ while : do echo -ne '\033[43m \033[0m' sleep 0.3 done } jindu & cp -r $1 $2 kill $!