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