批處理腳本設(shè)計簡單、直觀、靈活,使用方便。如果使用得當(dāng),可以使運維工作簡單化、清晰化。本文通過對Ping命令的批處理執(zhí)行,實現(xiàn)對系統(tǒng)內(nèi)多臺服務(wù)器和網(wǎng)絡(luò)設(shè)備的自動巡檢,并將巡檢的結(jié)果通過郵件的形式發(fā)送到運維人員,實現(xiàn)運維工作的自動化。
圖1 系統(tǒng)結(jié)構(gòu)示意圖
批處理,也稱為批處理腳本,是對某對象進(jìn)行批量的處理。簡單的說,它的作用就是自動的連續(xù)執(zhí)行多條命令,批處理文件的內(nèi)容就是一條一條的命令。批處理適合簡單重復(fù)性的命令操作,在計算機(jī)網(wǎng)絡(luò)運維工作中如果運用得當(dāng),無需增加設(shè)備成本,就可以收到很好的效果,對運維工作帶來幫助。
單位網(wǎng)站有100多臺服務(wù)器,根據(jù)業(yè)務(wù)需要這些服務(wù)器安裝了Windows系統(tǒng)或Linux系統(tǒng)。這些服務(wù)器通過幾臺接入交換機(jī)接入,通過接入交換機(jī)上聯(lián)到核心交換機(jī)上,再通過防火墻、路由器連接到互聯(lián)網(wǎng)上,系統(tǒng)結(jié)構(gòu),如圖1所示。
服務(wù)器有100多臺,在日常工作中,如果手動巡檢這些設(shè)備需要花費大量的時間。如何將人從繁雜重復(fù)的勞動中解放出來,實現(xiàn)簡單、高效方法來巡檢系統(tǒng)網(wǎng)絡(luò)和設(shè)備是我們面臨的。
日常設(shè)備的巡檢的主要工作就是檢查網(wǎng)絡(luò)通信是否正常、服務(wù)器是否宕機(jī)等。如果使用一臺服務(wù)器批量對其他服務(wù)器進(jìn)行Ping測試,所得的測試結(jié)果,將反映系統(tǒng)中大部分設(shè)備的運行是否正常。
Ping命令是系統(tǒng)自帶的一個可執(zhí)行命令。利用它可以檢查網(wǎng)絡(luò)是否能夠連通,用好它可以很好地幫助我們分析判斷網(wǎng)絡(luò)故障和對端設(shè)備是否在線。例如從一臺服務(wù)器,向另一臺服務(wù)器進(jìn)行Ping測試,如果能夠正常Ping通,那么則證明,本端服務(wù)器所連接的接入交換機(jī)、核心交換機(jī)、對端服務(wù)器所連接的的接入交換機(jī)、對端服務(wù)器,以及所連接的網(wǎng)絡(luò)線纜都是正常的。由此實現(xiàn)了對服務(wù)器端、接入層網(wǎng)絡(luò)、核心層網(wǎng)絡(luò)的巡檢。如圖,當(dāng)從服務(wù)器A向服務(wù)器B發(fā)起的Ping命令,可以測試包括服務(wù)器、網(wǎng)絡(luò)設(shè)備在內(nèi)的,共5臺設(shè)備的運行狀況,以及網(wǎng)絡(luò)連接情況。如圖2所示。
圖2 網(wǎng)絡(luò)連接情況
圖3 腳本設(shè)計流程
圖4 操作步驟
如果采用這種方法對設(shè)備進(jìn)行巡檢,巡檢100臺設(shè)備,就要執(zhí)行Ping命令100次,對于人工而言,這是一個大量和重復(fù)的工作。而批處理,是對某對象進(jìn)行批量的處理。如果設(shè)計一個批處理腳本,定時對所有服務(wù)器進(jìn)行Ping連通測試,記錄測試結(jié)果并對測試結(jié)果進(jìn)行分析,當(dāng)發(fā)現(xiàn)有故障時,服務(wù)器用郵件的方式通知管理員。這樣每天管理員只用查看郵件就可以了解系統(tǒng)內(nèi)大部分設(shè)備的是正常運行的,從而實現(xiàn)對系統(tǒng)設(shè)備的自動巡檢。
根據(jù)這個思路,將整個巡檢過程分為“設(shè)備巡檢”、“日志分析”、“郵件發(fā)送”、“日志歸檔”這4個部分。其中,“設(shè)備巡檢”采用批處理Ping命令的方式,逐一對設(shè)備進(jìn)行連通測試,并將測試結(jié)果生成巡檢日志文件;“日志分析”是將巡檢日志文件進(jìn)行分析和整理,從中發(fā)現(xiàn)有問題的巡檢記錄,并將其挑出,整理為故障日志;“郵件發(fā)送”,當(dāng)巡檢有問題時,將有問題的巡檢記錄以郵件的方式發(fā)送給管理員;“日志歸檔”,是將巡檢分析的結(jié)果按日期進(jìn)行歸檔,方便查閱和管理。
以上所有過程將在一個腳本中實現(xiàn)。腳本流程設(shè)計如圖3所示。研究上述腳本流程,可以發(fā)現(xiàn)“Ping、記錄測試結(jié)果、定時運行、結(jié)果分析、發(fā)送郵件、日志歸檔”是腳本內(nèi)容的關(guān)鍵部分。這些部分可以使用圖4所示方法實現(xiàn)。
下面將按設(shè)計好的流程來編寫腳本,通過舉例詳細(xì)說明腳本是如何編寫的。為了敘述有序,將腳本編寫過程分為“設(shè)備巡檢”、“日志分析”、“郵件發(fā)送”、“日志歸檔”4個部分來說明。
首先,是設(shè)備巡檢部分。設(shè)備巡檢是采用對“Ping”命令批處理的方式,通過一臺測試主機(jī)逐一對這兩臺服務(wù)器進(jìn)行連通測試,并將測試結(jié)果生成巡檢日志文件。服務(wù)器操作系統(tǒng)默認(rèn)情況下,“Ping”命令的默認(rèn)參數(shù)為:發(fā)送測試包大小32字節(jié),次數(shù)4次,超時時間為4000毫秒。使用默認(rèn)設(shè)置,巡檢速度較慢。為了提高巡檢效率,應(yīng)該對Ping命令的默認(rèn)參數(shù)進(jìn)行調(diào)整。例如:要檢查192.168.1.2這臺服務(wù)器,執(zhí)行命令:ping -l 1 -n 2-w 20 192.168.1.2 >>d: j192.168.1.2.txt,通過這條命令檢查了這臺服務(wù)器的網(wǎng)絡(luò)連通性,并將結(jié)果保存到測試主機(jī)D盤根目錄下的“tj”目錄中,192.168.1.2.txt就是這臺服務(wù)器巡檢日志,日志中包含Ping測試回顯的信息。這條命令中使用-l參數(shù)將發(fā)送包字節(jié)數(shù)設(shè)置為最小的1字節(jié),使用-n參數(shù)將回顯次數(shù)設(shè)為2次,采用-w參數(shù)將超時時間設(shè)置為20毫秒。每巡檢一臺設(shè)備就編寫一條腳本,如果要巡檢IP地址分別192.168.1.2和192.168.1.3這兩臺服務(wù)器,其設(shè)備巡檢的腳本就應(yīng)該是2條,即:
每臺服務(wù)器的巡檢日志文件,是以其IP地址為名字的文本文檔。N臺服務(wù)器就會有N個巡檢日志文件。
其次,是對巡檢日志的分析。日志分析的原理,是通過腳本查找日志文檔中是否含有故障信息的字符串,如其中含有故障信息則表明該服務(wù)器工作不正常,從而實現(xiàn)對系統(tǒng)設(shè)備運行狀況的分析判斷。下面以分析系統(tǒng)中是否存在連接超時故障為例,說明日志分析的過程。當(dāng)IP地址為“192.168.1.2”的服務(wù)器發(fā)生宕機(jī)時,Ping測試這臺服務(wù)器會出現(xiàn)連接超時的現(xiàn)象。因此在經(jīng)過設(shè)備巡檢部分的腳本巡檢,執(zhí)行Ping測試和日志寫入命令后,在其文件名為“192.168.1.2.txt”的巡檢日志文檔中,將包含有“Request timed out.”的字符串。日志分析部分的腳本在“分析”過程中,通過“findstr”命令查找各日志文檔中是否含有“Request timed out”的文字。名字為“192.168.1.2.txt”日志文檔中由于包含該字符串,因此將會被腳本查找出來,并將此日志文件的文件名寫入一個名為“result.txt”的文本文件中。即result.txt中的內(nèi)容就是:“d: j192.168.1.2.txt”。result.txt中保存著巡檢日志分析的結(jié)果,也就是故障記錄,通過“分析”發(fā)現(xiàn)有故障的服務(wù)器的巡檢日志名就會被寫入到這個文件中,因為巡檢日志名是以服務(wù)器的IP地址命名的,所以可以通過這些內(nèi)容就可以直接對應(yīng)到發(fā)生故障的服務(wù)器。巡檢日志分析的腳本如下:
這條腳本的意思是使用findstr命令查找在D盤tj目錄下的所有文本文檔中是否含有"Request timed out."字符串。如果含有該字符串,則將含有該字符串的文本文檔的文件名寫入D盤fx目錄下的result.txt文件中。其中findstr是Windows系統(tǒng)自帶的命令,用途是在指定文件中尋找字符串?!癴indstr”命令使用“/m”參數(shù),表示如果文件含有匹配項,只打印其文件名。使用“/c”參數(shù),可以指定字符串作為文字搜索字符串。
再次,是郵件發(fā)送。郵件發(fā)送是巡檢中如果發(fā)現(xiàn)故障,則將故障情況發(fā)送郵件通知管理員。如果沒有故障,則不發(fā)送郵件。如前所述,result.txt文件中保存的是故障記錄。如果result.txt內(nèi)容為空,則表明在各日志中沒有搜索到相關(guān)故障字符串,即巡檢正常沒有故障,反之則表明巡檢發(fā)現(xiàn)錯誤。因此判斷result.txt文件是否非空,就是判斷巡檢日志中是否發(fā)現(xiàn)錯誤。將result.txt文件的內(nèi)容賦值為x,將空白文本文件賦值為y,將x與y比較,如果x=y,則證明result.txt文件內(nèi)容為空,巡檢正常。如果x≠y則表明巡檢發(fā)現(xiàn)錯誤,則觸發(fā)郵件發(fā)送命令。郵件發(fā)送部分的腳本為:
將錯誤日志文件的結(jié)果賦值到變量x。
通過x和y的值的比較,如果 x=y(tǒng) ,則回顯“ok”,否則將發(fā)送“result.txt”文件的內(nèi)容給運維員的郵箱gxfy123@sina.com。運維人員根據(jù)郵件中的內(nèi)容,可以發(fā)現(xiàn)是哪臺服務(wù)器出現(xiàn)了問題。Windows命令行下沒有直接發(fā)送郵件的內(nèi)置命令。安裝開源軟件Blat,可以實現(xiàn)命令行郵件的發(fā)送。Blat的安裝使用都非常簡單。將Blat軟件復(fù)制到系統(tǒng)盤的system32目錄下就可以使用。
最后,是日志歸檔。經(jīng)過巡檢、分析和郵件發(fā)送后,最后應(yīng)將各日志文檔和錯誤分析文檔result.txt,按日期進(jìn)行整理歸檔,方便管理和查看。日志歸檔的腳本如下:
將批處理Ping命令后生成的巡檢文件按日期歸檔到d:ackup目錄下。
將錯誤日志文件,按日期歸檔到d:ackupfx目錄下。
以上就是系統(tǒng)自動化運維批處理腳本編寫過程的分解說明。最后,還要在腳本的末尾,加上一行:exit。完成整個批處理腳本的編寫。
將上述腳本命令行,按順序?qū)懭搿毙陆ㄎ谋疚臋n.txt”中。并將該文件改名為“test.bat”。生成批處理腳本文件“test.bat”。在“開始”菜單,“附件”-->“系統(tǒng)工具”中選擇,“任務(wù)計劃”。按提示添加腳本文件test.bat到計劃任務(wù)中。運行這個任務(wù),選擇“每天”,啟始時間選擇為“2:00”。點擊完成生成計劃任務(wù)。選擇每天凌晨2點執(zhí)行腳本進(jìn)行巡檢,是因為這個時段系統(tǒng)用戶訪問量最低,批處理腳本執(zhí)行對系統(tǒng)影響最小。在Outlook Express設(shè)置郵箱數(shù)據(jù)。接收gxfy123@sina.com的郵件。每天上班后接收郵件就會有凌晨2點的測試結(jié)果,如果有郵件,則有服務(wù)器可能存在故障,沒有郵件則證明服務(wù)器一切正常。如下圖,收到的郵件,郵件內(nèi)容是兩個文件名。由此可知2013年11月4日通過巡檢測試發(fā)現(xiàn)192.168.1.2和192.168.1.3這兩臺服務(wù)器存在故障的可能。根據(jù)這個信息,運維人員可以有的放矢地針對這兩臺設(shè)備進(jìn)行相應(yīng)的檢查和故障的處理。
經(jīng)過測試,通過上述執(zhí)行批處理腳本的方式進(jìn)行巡檢,完成100臺服務(wù)器的Ping測試巡檢、發(fā)送郵件、日志歸檔,總共只需要不到2分鐘的時間。通過腳本巡檢,可以自動地檢查設(shè)備的網(wǎng)絡(luò)狀況,并通過分析,將故障情況通過郵件報告的方式傳達(dá)給維護(hù)人員。將這個系統(tǒng)自動化運維腳本應(yīng)用到實際工作中,已經(jīng)多次發(fā)現(xiàn)并報告了系統(tǒng)故障,使系統(tǒng)運維人員的維護(hù)工作準(zhǔn)確、高效,的幫助了運維人員進(jìn)行維護(hù)和管理。
通過批處理腳本來進(jìn)行系統(tǒng)維護(hù)和管理,不用添加設(shè)備,增加維護(hù)費用,只使用一些簡單的語言,就可以設(shè)計出靈活、高效的腳本,將大量的重復(fù)的工作都交給了后臺的服務(wù)器或電腦去運行,降低了勞動強(qiáng)度,能夠準(zhǔn)確有效的處理問題。因此建議運維人員,在日常運維中活學(xué)活用,設(shè)計出適合自己使用的腳本,更輕松、高效地開展運維工作。