shell脚本应用(二)
防偽碼:會當凌絕頂,一覽眾山小!? ??
??????????????第六章 shell腳本應用(二)
前言:為了使shell腳本具有一定的“判斷”能力,根據不同的條件來完成不同的管理任務。使腳本具有一定的“智能”。
目標:學會使用條件測試操作+if條件語句+實驗(構建postfix郵件系統并測試系統管理和維護)
一、 條件測試操作
1、 文件測試(根據給定的路徑名稱,判斷對應的是文件還是目錄,或者判斷文件是否可讀、可寫、可執行)
-d(是否為目錄)
-e(目錄或文件是否存在)
-f(是否為文件)
-r(讀取)-w(寫入)?-x(執行)
測試/media/cdrom是否存在,為0表示存在此目錄,返回1不存在。
為了顯示更直觀,可改為以下方式
2、 整數值比較(用來判斷已登錄用戶數量,開啟進程數,磁盤使用率是否超標,以及軟件版本號是否符合要求等)
設第一個數為x,第二個數為y
-eq: ?x = y
-ne: ?x?≠ y
-gt: ?x > y
-lt: ?x < y
-le: ?x?≤ y
-ge:x?≥ y
1)例如:判斷當前已登錄的用戶數,當超過5個時輸出“too many”
2) 判斷當前可用的空閑內存大小,當低于1024m時輸出具體數值。
?3、 字符串比較(常用來檢查用戶輸入,系統環境是否滿足條件,以及判斷用戶輸入的位置參數是否符合要求)
=:第一個字符串與第二個字符串相同
!=:第一個字符串與第二個字符創不相同
-z:檢查字符串是否為空
1)例如:判斷當前的語言環境,當發現不是en.us時輸出提示信息“not ?en.us”
2) 交互式的簡單案例
4、 邏輯測試(判斷兩個或者多個條件之間的依賴關系)
&&:前后兩個條件都成立,測試命令返回值為0(結果成立)
||:前后兩個條件之一成立,測試命令返回值為0(結果成立)
!:指定條件不成立,測試命令返回值為0(結果成立)
1) 例如:判斷當前linux內核版本是否大于2.4,可以執行以下操作:
二、 使用if條件語句(更好的整理腳本結構,使得層次分明,清晰易懂)
1、 單分支的if語句(條件成立,執行相應的代碼)
1) 例如:掛載光盤的操作,先判斷掛載點目錄是否存在,若不存在則新建此目錄
Vi ?chkmountdir.sh,內容如下:
?2) 判斷當前用戶是不是root,如果不是則報錯并執行exit 1退出腳本(1表示退出后的返回狀態值),而不再執行其他代碼
Vim ?chkifroot.sh
執行腳本:./chkifroot.sh,因為當前登錄的用戶是root,所以執行fi之后的代碼
?2、?雙分支if語句應用(嵌套使用,多次判斷)
1)例如:編寫一個連通性測試腳本pinghost.sh,
設置執行權限之后測試
?2) 再例如:通過shell腳本檢查vsftpd服務是否運行,如果已運行則列出其監聽地址、pid號,否則輸出提示“vsftpd服務不可用!”
首先安裝vsftpd軟件
然后編寫腳本vim ?chkftpd.sh
接下來設置權限并執行,提示vsftpd服務不可用
開啟vsftpd服務器之后再次執行腳本
3、 多分支if語句應用(能夠根據多個互斥條件分別執行不同操作,實際上等同于嵌套使用的if語句)
例如:根據輸入的考試分數的不同來區分優秀,合格,不合格三檔
Vi ?gradediv.sh
設置權限之后執行腳本:
上機實驗部分:
完成此實驗必須安裝postfix郵件服務器,我的服務器已經安裝好,只需要配置即可。
1、使用postfix ? check命令檢查服務器的配置,如果沒有提示說明沒問題。
2、 開啟postfix服務
3、 修改配置文件,(/etc/postfix/main.cf)改為以下的效果。(下面的代碼都有,去掉前面的#號,修改后面的值即可,
改完之后重啟postfix服務,使用postfix reload重新加載。)
重啟、重載
4、 安裝telnet服務器和客戶端(若telnet-server包裝不了,先裝xinetd包)
5、 配置dns服務器,在原來的基礎之上修改數據文件google.com.zone即可
6、 修改vim ?/etc/resolv.conf
7、 使用telnet測試郵件服務器,看到下面的220說明postfix服務器沒問題,可以發送郵件了。
8、 編寫sysmon.sh腳本
(1)使用df命令提取出根分區的磁盤占用率,賦值給變量DUG。
(2)使用mpstat命令提取CPU使用率(需安裝sysstat軟件包),賦值給變量CUG。
(3)使用free命令提取出內存使用率,賦值給變量MUG。
(4)判斷上述監控項目是否超標,將需要告警的信息保存到/tmp/alert.txt文件。
(5)判斷/tmp/alert.txt文件是否存在,若存在則作為告警郵件發送。
9、測試sysmon.sh腳本的執行情況
(1)確認有可用的郵件服務器(如Postfix、Sendmail等),然后調低監控閾值,執行sysmon.sh腳本進行測試。
(2) 查收yangwen@google.com的郵箱,確認告警郵件內容。
10、設置crontab計劃任務
確認系統服務crond已經運行。添加crontab計劃任務配置,每半小時調用一次sysmon.sh腳本程序。
謝謝大家的觀看!
轉載于:https://blog.51cto.com/yw666/1853991
總結
以上是生活随笔為你收集整理的shell脚本应用(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入了解 Oracle Flex ASM
- 下一篇: implicit assignment