批處理腳本設計簡單、直觀、靈活,使用方便。如果使用得當,可以使運維工作簡單化、清晰化。本文通過對Ping命令的批處理執行,實現對系統內多臺服務器和網絡設備的自動巡檢,并將巡檢的結果通過郵件的形式發送到運維人員,實現運維工作的自動化。

圖1 系統結構示意圖
批處理,也稱為批處理腳本,是對某對象進行批量的處理。簡單的說,它的作用就是自動的連續執行多條命令,批處理文件的內容就是一條一條的命令。批處理適合簡單重復性的命令操作,在計算機網絡運維工作中如果運用得當,無需增加設備成本,就可以收到很好的效果,對運維工作帶來幫助。
單位網站有100多臺服務器,根據業務需要這些服務器安裝了Windows系統或Linux系統。這些服務器通過幾臺接入交換機接入,通過接入交換機上聯到核心交換機上,再通過防火墻、路由器連接到互聯網上,系統結構,如圖1所示。
服務器有100多臺,在日常工作中,如果手動巡檢這些設備需要花費大量的時間。如何將人從繁雜重復的勞動中解放出來,實現簡單、高效方法來巡檢系統網絡和設備是我們面臨的。
日常設備的巡檢的主要工作就是檢查網絡通信是否正常、服務器是否宕機等。如果使用一臺服務器批量對其他服務器進行Ping測試,所得的測試結果,將反映系統中大部分設備的運行是否正常。
Ping命令是系統自帶的一個可執行命令。利用它可以檢查網絡是否能夠連通,用好它可以很好地幫助我們分析判斷網絡故障和對端設備是否在線。例如從一臺服務器,向另一臺服務器進行Ping測試,如果能夠正常Ping通,那么則證明,本端服務器所連接的接入交換機、核心交換機、對端服務器所連接的的接入交換機、對端服務器,以及所連接的網絡線纜都是正常的。由此實現了對服務器端、接入層網絡、核心層網絡的巡檢。如圖,當從服務器A向服務器B發起的Ping命令,可以測試包括服務器、網絡設備在內的,共5臺設備的運行狀況,以及網絡連接情況。如圖2所示。

圖2 網絡連接情況

圖3 腳本設計流程

圖4 操作步驟
如果采用這種方法對設備進行巡檢,巡檢100臺設備,就要執行Ping命令100次,對于人工而言,這是一個大量和重復的工作。而批處理,是對某對象進行批量的處理。如果設計一個批處理腳本,定時對所有服務器進行Ping連通測試,記錄測試結果并對測試結果進行分析,當發現有故障時,服務器用郵件的方式通知管理員。這樣每天管理員只用查看郵件就可以了解系統內大部分設備的是正常運行的,從而實現對系統設備的自動巡檢。
根據這個思路,將整個巡檢過程分為“設備巡檢”、“日志分析”、“郵件發送”、“日志歸檔”這4個部分。其中,“設備巡檢”采用批處理Ping命令的方式,逐一對設備進行連通測試,并將測試結果生成巡檢日志文件;“日志分析”是將巡檢日志文件進行分析和整理,從中發現有問題的巡檢記錄,并將其挑出,整理為故障日志;“郵件發送”,當巡檢有問題時,將有問題的巡檢記錄以郵件的方式發送給管理員;“日志歸檔”,是將巡檢分析的結果按日期進行歸檔,方便查閱和管理。
以上所有過程將在一個腳本中實現。腳本流程設計如圖3所示。研究上述腳本流程,可以發現“Ping、記錄測試結果、定時運行、結果分析、發送郵件、日志歸檔”是腳本內容的關鍵部分。這些部分可以使用圖4所示方法實現。
下面將按設計好的流程來編寫腳本,通過舉例詳細說明腳本是如何編寫的。為了敘述有序,將腳本編寫過程分為“設備巡檢”、“日志分析”、“郵件發送”、“日志歸檔”4個部分來說明。
首先,是設備巡檢部分。設備巡檢是采用對“Ping”命令批處理的方式,通過一臺測試主機逐一對這兩臺服務器進行連通測試,并將測試結果生成巡檢日志文件。服務器操作系統默認情況下,“Ping”命令的默認參數為:發送測試包大小32字節,次數4次,超時時間為4000毫秒。使用默認設置,巡檢速度較慢。為了提高巡檢效率,應該對Ping命令的默認參數進行調整。例如:要檢查192.168.1.2這臺服務器,執行命令:ping -l 1 -n 2-w 20 192.168.1.2 >>d: j192.168.1.2.txt,通過這條命令檢查了這臺服務器的網絡連通性,并將結果保存到測試主機D盤根目錄下的“tj”目錄中,192.168.1.2.txt就是這臺服務器巡檢日志,日志中包含Ping測試回顯的信息。這條命令中使用-l參數將發送包字節數設置為最小的1字節,使用-n參數將回顯次數設為2次,采用-w參數將超時時間設置為20毫秒。每巡檢一臺設備就編寫一條腳本,如果要巡檢IP地址分別192.168.1.2和192.168.1.3這兩臺服務器,其設備巡檢的腳本就應該是2條,即:

每臺服務器的巡檢日志文件,是以其IP地址為名字的文本文檔。N臺服務器就會有N個巡檢日志文件。
其次,是對巡檢日志的分析。日志分析的原理,是通過腳本查找日志文檔中是否含有故障信息的字符串,如其中含有故障信息則表明該服務器工作不正常,從而實現對系統設備運行狀況的分析判斷。下面以分析系統中是否存在連接超時故障為例,說明日志分析的過程。當IP地址為“192.168.1.2”的服務器發生宕機時,Ping測試這臺服務器會出現連接超時的現象。因此在經過設備巡檢部分的腳本巡檢,執行Ping測試和日志寫入命令后,在其文件名為“192.168.1.2.txt”的巡檢日志文檔中,將包含有“Request timed out.”的字符串。日志分析部分的腳本在“分析”過程中,通過“findstr”命令查找各日志文檔中是否含有“Request timed out”的文字。名字為“192.168.1.2.txt”日志文檔中由于包含該字符串,因此將會被腳本查找出來,并將此日志文件的文件名寫入一個名為“result.txt”的文本文件中。即result.txt中的內容就是:“d: j192.168.1.2.txt”。result.txt中保存著巡檢日志分析的結果,也就是故障記錄,通過“分析”發現有故障的服務器的巡檢日志名就會被寫入到這個文件中,因為巡檢日志名是以服務器的IP地址命名的,所以可以通過這些內容就可以直接對應到發生故障的服務器。巡檢日志分析的腳本如下:

這條腳本的意思是使用findstr命令查找在D盤tj目錄下的所有文本文檔中是否含有"Request timed out."字符串。如果含有該字符串,則將含有該字符串的文本文檔的文件名寫入D盤fx目錄下的result.txt文件中。其中findstr是Windows系統自帶的命令,用途是在指定文件中尋找字符串。“findstr”命令使用“/m”參數,表示如果文件含有匹配項,只打印其文件名。使用“/c”參數,可以指定字符串作為文字搜索字符串。
再次,是郵件發送。郵件發送是巡檢中如果發現故障,則將故障情況發送郵件通知管理員。如果沒有故障,則不發送郵件。如前所述,result.txt文件中保存的是故障記錄。如果result.txt內容為空,則表明在各日志中沒有搜索到相關故障字符串,即巡檢正常沒有故障,反之則表明巡檢發現錯誤。因此判斷result.txt文件是否非空,就是判斷巡檢日志中是否發現錯誤。將result.txt文件的內容賦值為x,將空白文本文件賦值為y,將x與y比較,如果x=y,則證明result.txt文件內容為空,巡檢正常。如果x≠y則表明巡檢發現錯誤,則觸發郵件發送命令。郵件發送部分的腳本為:

將錯誤日志文件的結果賦值到變量x。

通過x和y的值的比較,如果 x=y ,則回顯“ok”,否則將發送“result.txt”文件的內容給運維員的郵箱gxfy123@sina.com。運維人員根據郵件中的內容,可以發現是哪臺服務器出現了問題。Windows命令行下沒有直接發送郵件的內置命令。安裝開源軟件Blat,可以實現命令行郵件的發送。Blat的安裝使用都非常簡單。將Blat軟件復制到系統盤的system32目錄下就可以使用。


最后,是日志歸檔。經過巡檢、分析和郵件發送后,最后應將各日志文檔和錯誤分析文檔result.txt,按日期進行整理歸檔,方便管理和查看。日志歸檔的腳本如下:

將批處理Ping命令后生成的巡檢文件按日期歸檔到d:ackup目錄下。

將錯誤日志文件,按日期歸檔到d:ackupfx目錄下。
以上就是系統自動化運維批處理腳本編寫過程的分解說明。最后,還要在腳本的末尾,加上一行:exit。完成整個批處理腳本的編寫。
將上述腳本命令行,按順序寫入”新建文本文檔.txt”中。并將該文件改名為“test.bat”。生成批處理腳本文件“test.bat”。在“開始”菜單,“附件”-->“系統工具”中選擇,“任務計劃”。按提示添加腳本文件test.bat到計劃任務中。運行這個任務,選擇“每天”,啟始時間選擇為“2:00”。點擊完成生成計劃任務。選擇每天凌晨2點執行腳本進行巡檢,是因為這個時段系統用戶訪問量最低,批處理腳本執行對系統影響最小。在Outlook Express設置郵箱數據。接收gxfy123@sina.com的郵件。每天上班后接收郵件就會有凌晨2點的測試結果,如果有郵件,則有服務器可能存在故障,沒有郵件則證明服務器一切正常。如下圖,收到的郵件,郵件內容是兩個文件名。由此可知2013年11月4日通過巡檢測試發現192.168.1.2和192.168.1.3這兩臺服務器存在故障的可能。根據這個信息,運維人員可以有的放矢地針對這兩臺設備進行相應的檢查和故障的處理。
經過測試,通過上述執行批處理腳本的方式進行巡檢,完成100臺服務器的Ping測試巡檢、發送郵件、日志歸檔,總共只需要不到2分鐘的時間。通過腳本巡檢,可以自動地檢查設備的網絡狀況,并通過分析,將故障情況通過郵件報告的方式傳達給維護人員。將這個系統自動化運維腳本應用到實際工作中,已經多次發現并報告了系統故障,使系統運維人員的維護工作準確、高效,的幫助了運維人員進行維護和管理。
通過批處理腳本來進行系統維護和管理,不用添加設備,增加維護費用,只使用一些簡單的語言,就可以設計出靈活、高效的腳本,將大量的重復的工作都交給了后臺的服務器或電腦去運行,降低了勞動強度,能夠準確有效的處理問題。因此建議運維人員,在日常運維中活學活用,設計出適合自己使用的腳本,更輕松、高效地開展運維工作。