shell腳本應(yīng)用(二)

2018-06-08 17:05 更新

防偽碼:會(huì)當(dāng)凌絕頂,一覽眾山??!    

              第六章 shell腳本應(yīng)用(二)

前言:為了使shell腳本具有一定的“判斷”能力,根據(jù)不同的條件來完成不同的管理任務(wù)。使腳本具有一定的“智能”。

目標(biāo):學(xué)會(huì)使用條件測(cè)試操作+if條件語句+實(shí)驗(yàn)(構(gòu)建postfix郵件系統(tǒng)并測(cè)試系統(tǒng)管理和維護(hù))

一、 條件測(cè)試操作

1、 文件測(cè)試(根據(jù)給定的路徑名稱,判斷對(duì)應(yīng)的是文件還是目錄,或者判斷文件是否可讀、可寫、可執(zhí)行)

-d(是否為目錄)

-e(目錄或文件是否存在)

-f(是否為文件)

-r(讀取)-w(寫入) -x(執(zhí)行)

測(cè)試/media/cdrom是否存在,為0表示存在此目錄,返回1不存在。

為了顯示更直觀,可改為以下方式

2、 整數(shù)值比較(用來判斷已登錄用戶數(shù)量,開啟進(jìn)程數(shù),磁盤使用率是否超標(biāo),以及軟件版本號(hào)是否符合要求等)

設(shè)第一個(gè)數(shù)為x,第二個(gè)數(shù)為y

-eq:  x = y

-ne:  x ≠ y

-gt:  x > y

-lt:  x < y

-le:  x ≤ y

-ge:x ≥ y

1)例如:判斷當(dāng)前已登錄的用戶數(shù),當(dāng)超過5個(gè)時(shí)輸出“too many”

2) 判斷當(dāng)前可用的空閑內(nèi)存大小,當(dāng)?shù)陀?024m時(shí)輸出具體數(shù)值。

 3、 字符串比較(常用來檢查用戶輸入,系統(tǒng)環(huán)境是否滿足條件,以及判斷用戶輸入的位置參數(shù)是否符合要求)

=:第一個(gè)字符串與第二個(gè)字符串相同

!=:第一個(gè)字符串與第二個(gè)字符創(chuàng)不相同

-z:檢查字符串是否為空

1)例如:判斷當(dāng)前的語言環(huán)境,當(dāng)發(fā)現(xiàn)不是en.us時(shí)輸出提示信息“not  en.us”

2) 交互式的簡單案例

4、 邏輯測(cè)試(判斷兩個(gè)或者多個(gè)條件之間的依賴關(guān)系)

&&:前后兩個(gè)條件都成立,測(cè)試命令返回值為0(結(jié)果成立)

||:前后兩個(gè)條件之一成立,測(cè)試命令返回值為0(結(jié)果成立)

?。褐付l件不成立,測(cè)試命令返回值為0(結(jié)果成立)

1) 例如:判斷當(dāng)前l(fā)inux內(nèi)核版本是否大于2.4,可以執(zhí)行以下操作:

二、 使用if條件語句(更好的整理腳本結(jié)構(gòu),使得層次分明,清晰易懂)

1、 單分支的if語句(條件成立,執(zhí)行相應(yīng)的代碼)

1) 例如:掛載光盤的操作,先判斷掛載點(diǎn)目錄是否存在,若不存在則新建此目錄

Vi  chkmountdir.sh,內(nèi)容如下:

 2) 判斷當(dāng)前用戶是不是root,如果不是則報(bào)錯(cuò)并執(zhí)行exit 1退出腳本(1表示退出后的返回狀態(tài)值),而不再執(zhí)行其他代碼

Vim  chkifroot.sh

執(zhí)行腳本:./chkifroot.sh,因?yàn)楫?dāng)前登錄的用戶是root,所以執(zhí)行fi之后的代碼

 2、 雙分支if語句應(yīng)用(嵌套使用,多次判斷)

1)例如:編寫一個(gè)連通性測(cè)試腳本pinghost.sh,

設(shè)置執(zhí)行權(quán)限之后測(cè)試

 2) 再例如:通過shell腳本檢查vsftpd服務(wù)是否運(yùn)行,如果已運(yùn)行則列出其監(jiān)聽地址、pid號(hào),否則輸出提示“vsftpd服務(wù)不可用!”

首先安裝vsftpd軟件

然后編寫腳本vim  chkftpd.sh

接下來設(shè)置權(quán)限并執(zhí)行,提示vsftpd服務(wù)不可用

開啟vsftpd服務(wù)器之后再次執(zhí)行腳本

3、 多分支if語句應(yīng)用(能夠根據(jù)多個(gè)互斥條件分別執(zhí)行不同操作,實(shí)際上等同于嵌套使用的if語句)

例如:根據(jù)輸入的考試分?jǐn)?shù)的不同來區(qū)分優(yōu)秀,合格,不合格三檔

Vi  gradediv.sh

設(shè)置權(quán)限之后執(zhí)行腳本:

上機(jī)實(shí)驗(yàn)部分:

完成此實(shí)驗(yàn)必須安裝postfix郵件服務(wù)器,我的服務(wù)器已經(jīng)安裝好,只需要配置即可。

1、使用postfix   check命令檢查服務(wù)器的配置,如果沒有提示說明沒問題。

2、 開啟postfix服務(wù)

3、 修改配置文件,(/etc/postfix/main.cf)改為以下的效果。(下面的代碼都有,去掉前面的#號(hào),修改后面的值即可,

改完之后重啟postfix服務(wù),使用postfix reload重新加載。)

重啟、重載

4、 安裝telnet服務(wù)器和客戶端(若telnet-server包裝不了,先裝xinetd包)

5、 配置dns服務(wù)器,在原來的基礎(chǔ)之上修改數(shù)據(jù)文件google.com.zone即可

6、 修改vim  /etc/resolv.conf

7、 使用telnet測(cè)試郵件服務(wù)器,看到下面的220說明postfix服務(wù)器沒問題,可以發(fā)送郵件了。

8、 編寫sysmon.sh腳本

(1)使用df命令提取出根分區(qū)的磁盤占用率,賦值給變量DUG。

(2)使用mpstat命令提取CPU使用率(需安裝sysstat軟件包),賦值給變量CUG。

(3)使用free命令提取出內(nèi)存使用率,賦值給變量MUG。

(4)判斷上述監(jiān)控項(xiàng)目是否超標(biāo),將需要告警的信息保存到/tmp/alert.txt文件。

(5)判斷/tmp/alert.txt文件是否存在,若存在則作為告警郵件發(fā)送。


9、測(cè)試sysmon.sh腳本的執(zhí)行情況

(1)確認(rèn)有可用的郵件服務(wù)器(如Postfix、Sendmail等),然后調(diào)低監(jiān)控閾值,執(zhí)行sysmon.sh腳本進(jìn)行測(cè)試。

(2) 查收yangwen@google.com的郵箱,確認(rèn)告警郵件內(nèi)容。

10、設(shè)置crontab計(jì)劃任務(wù)

確認(rèn)系統(tǒng)服務(wù)crond已經(jīng)運(yùn)行。添加crontab計(jì)劃任務(wù)配置,每半小時(shí)調(diào)用一次sysmon.sh腳本程序。

謝謝大家的觀看!

本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)