載自:http://lulu87.blog.51cto.com/1244696/373771
實驗案例一:使用Shell指令碼進行系統管理
實驗環境
公司配備了一台Linux伺服器用於分公司於昂的技術培訓,因此需要經常或批量的添加使用者帳號,另外該伺服器還有與運行培訓部的web網站,需要經常監控網站服務程式的運行狀態.
需求描述
編寫指令碼程式用於檢測系統服務httpd的運行狀態,要求如下:
1)、當服務狀態失常時在“/var/log/htmon.log”檔案中計入日誌資訊。
2)、自動將狀態失常的httpd服務重新啟動。
3)、若重新啟httpd服務失敗,則嘗試重新啟動伺服器主機。
4)、結合crond計劃任務服務,每周一至周五每隔15分鐘執行一次檢測任務。
編寫指令碼程式用於大量新增使用者,要求如下:
1)、要求提供互動功能,當管理員執行該指令碼程式時,可以根據指定需添加的使用者數量(少於100人)、使用者名稱首碼,並能夠設定這些使用者帳號的失效時間、初始密碼。
2)、使用者編碼統一使用兩位元,如使用“01”、“02”、“03”的形式,而不是“1”、“2”、“3”的形式。
3)、編寫對應的大量刪除使用者的指令碼,部需要提供互動功能,但是要能通過命令列參數指定使用者名稱首碼,執行指令碼侯刪除所有使用該首碼的使用者帳號,但是要防止誤刪除root使用者。
推薦步驟
編寫htmon.sh指令檔,用於檢測httpd服務的狀態
1)、使用“service httpd status”命令測試httpd服務的狀態,傳回值為0時表示正常,傳回值非0時表示不正常。
2)、服務狀態失常時,通過重新導向追加符號“>>”向“/var/log/htmon.log”檔案中寫入日誌記錄資訊。
3)、使用“service httpd restart”命令重啟httpd服務,並再次執行“service httpd status”命令查看httpd服務的狀態。
4)、若服務仍然不正常,則使用chkconfig命令將httpd服務設為自啟動,然後通過shutdown命令重啟系統。
5)、將測試完畢的指令檔儲存到檔案“/opt/htmon.sh”中,並設定計劃任務定期執行。
指令碼內容如下:
Crond計劃服務:
編寫myuadd.sh指令碼,用於大量新增使用者帳號。
1)、使用read命令提示使用者輸入使用者數量、使用者名稱首碼、失效時間、初始密碼等變數資訊。
2)、使用while語句迴圈執行添加使用者的命令操作。
3)、使用if語句對使用者編號進行判斷,對小於10的帳號自動在前置詞字元串末尾加上字元“0”。
指令碼內容如下:
執行完該指令碼的結果:
編寫myudel.sh指令碼,用於大量刪除使用者帳號。
1)、使用管理員執行指令碼時輸入的第一個位置參數作為使用者名稱首碼(建議不要短於3個字元,並盡量避免與其他無關使用者想重疊,以免誤刪)。
2)、若管理員未指定位置參數,則提示錯誤後結束程式(可以使用“exit 1”語句,1表示指令碼退出後返回Shell環境的狀態值)。
3)、使用grep命令、cut命令過濾passwd檔案中使用指定首碼的使用者帳號名稱,結合“-v”選項排除掉root使用者。
4)、注意先對“/etc/passwd”、“/etc/shadow”、“/etc/group”等檔案做好備份,以免誤刪除系統使用者後用於恢複(刪除使用者前應進行仔細對、確認)。
5)、使用for語句迴圈執行刪除使用者帳號的命令操作。
指令碼內容如下:
執行結果:
實驗案例二:編寫簡單的系統服務啟動指令碼
實驗環境
在一台rhel5伺服器中通過源碼編譯安裝了zebra軟體,用於提供軟路由服務。為了更方便對zebra服務進行啟動、終止等管理操作,需要編寫簡單的zebra服務啟動指令碼。
需求描述
編寫zebrad指令碼程式,並儲存到“/etc/init.d”目錄,要求如下。
1)、能夠執行“/etc/init.d/zebrad start”啟動zebra服務程式。
2)、能夠執行“/etc/init.d/zebrad stop”終止zebra服務程式。
3)、能夠執行“/etc/init.d/zebrad restart”重新啟動zebra服務程式。
4)、能夠執行“/etc/init.d/zebrad status”查看zebra服務的狀態。
5)、若執行指令碼時為使用“start”、“stop”、“restart”、“status”參數,餓提示用法協助資訊後在退出。
6)、在啟動、終止服務時英顯示相關的提示資訊。
通過執行“chkconfig –add zebrad”命令將zerbrad添加為系統服務,並確認在運行層級3、5中的啟動狀態。
推薦步驟
編寫“/etc/init.d/zebra”指令檔,並添加“X”許可權
1)、將啟動、終止、查看狀態的zebra服務控制語句分別定義函數。
2)、通過“/usr/local/sbin/zebra -d”命令來啟動zebra服務。
3)、通過儲存在“/var/run/zebra.pid”檔案中的pid號來終止zebra服務的進程。
4)、通過判斷當前運行進程中的“zebra -d”資訊確定zebra服務的狀態,例如先執行“ps aux |grep “zebra -d”|grep –v “grep” &>/dev/null”命令,然後判斷其返回狀態。
5)、設定case語句,當使用者提供的指令碼參數($i)是“start”、“stop”、“restart”、“status”時分別調用對應的函數,否則執行預設操作,顯示用法協助資訊後退出。
指令檔內容如下:
使用“start”、“stop”、“restart”、“status”等參數測試zebra指令碼程式的功能。
執行“chkconfig –add zebra”命令,將zebra添加為ixt服務,並確認其在各運行層級的啟動狀態。
119850602