劉金明,鹿曉力
(1.吉林電子信息職業(yè)技術(shù)學(xué)院 計算機(jī)系,吉林 吉林132021;2.鄭州輕工業(yè)學(xué)院 電氣信息工程學(xué)院,河南 鄭州 450002)
機(jī)房計算機(jī)管理是一項(xiàng)復(fù)雜繁重的工作.在日常的管理與維護(hù)過程中,管理員經(jīng)常要對數(shù)十臺甚至百余臺計算機(jī)進(jìn)行批量開機(jī)、關(guān)機(jī)和重新啟動操作,同時還要做好計算機(jī)網(wǎng)絡(luò)的維護(hù),保證局域網(wǎng)的連通順暢.若能設(shè)計出一款界面友好、簡捷易用的機(jī)房計算機(jī)管理軟件來幫助管理員完成繁復(fù)的工作,就可以將其從大量的重復(fù)勞動中解放出來,也提高了機(jī)房的管理效率和管理水平.
將適合編寫圖形化界面程序的Visual Basic(簡稱VB)與批處理的強(qiáng)大功能相結(jié)合,做到優(yōu)勢互補(bǔ),便可設(shè)計出基于VB與批處理的機(jī)房計算機(jī)管理軟件,實(shí)現(xiàn)上述愿望.
VB是由微軟公司開發(fā)的一種可視化的、面向?qū)ο蠛筒捎檬录?qū)動方式的結(jié)構(gòu)化高級程序設(shè)計語言,適合開發(fā) Windows 環(huán)境下的各類應(yīng)用程序.事件驅(qū)動適用于具有圖形用戶界面(GUI)的軟件編程方式,采用VB語言,利用事件驅(qū)動的編程機(jī)制,可以高效地開發(fā)出功能強(qiáng)大、圖形界面豐富的應(yīng)用軟件[1-3].
批處理(也稱為批處理腳本或批處理程序)文件的擴(kuò)展名為 .bat或 .cmd,它由Windows系統(tǒng)內(nèi)嵌的命令解釋器cmd.exe解釋運(yùn)行.批處理腳本支持順序、分支、循環(huán)3種基本控制結(jié)構(gòu),其中的每條語句都是命令解釋器能夠單獨(dú)執(zhí)行的具有一定功能的命令.一個功能強(qiáng)大的批處理就是在依據(jù)實(shí)際需要選用命令語句的基礎(chǔ)上,巧妙利用各種控制結(jié)構(gòu)對其加以有機(jī)組合而設(shè)計出的腳本[4].
由于VB與批處理二者相差較遠(yuǎn),通常不會將其聯(lián)合起來進(jìn)行軟件開發(fā),但考慮到VB適用于開發(fā)具有圖形界面的程序,而批處理在網(wǎng)絡(luò)及遠(yuǎn)程控制方面具有諸如ping、shutdown等方便實(shí)用的命令可供利用,只要能解決兩種不同程序間的數(shù)據(jù)傳遞問題,便可將二者聯(lián)合進(jìn)行軟件開發(fā),使其優(yōu)勢互補(bǔ).
根據(jù)對機(jī)房計算機(jī)管理員日常工作內(nèi)容的調(diào)查了解及綜合歸納,計算機(jī)管理軟件的主要任務(wù)是對計算機(jī)實(shí)施遠(yuǎn)程控制,它應(yīng)包括批量開機(jī)(包含MAC地址掃描和遠(yuǎn)程喚醒兩個子模塊)、批量關(guān)機(jī)、批量重啟、取消關(guān)機(jī)/重啟、局域網(wǎng)連通性檢測、短消息發(fā)送和參數(shù)配置等7個功能模塊.
由于命令解釋器固有命令對上述要實(shí)現(xiàn)的功能的支持,批量關(guān)機(jī)、批量重啟、取消關(guān)機(jī)/重啟、局域網(wǎng)連通性檢測和短消息發(fā)送等5個模塊以及MAC地址掃描子模塊基于批處理進(jìn)行設(shè)計較為簡便,各模塊獨(dú)立形成批處理腳本,由人機(jī)界面通過Shell函數(shù)調(diào)用執(zhí)行.
遠(yuǎn)程喚醒子模塊因涉及網(wǎng)絡(luò)協(xié)議及數(shù)據(jù)包的形成與發(fā)送,參數(shù)配置模塊本身是人機(jī)界面的一部分,則二者采用VB設(shè)計實(shí)現(xiàn)比較合適.
圖1給出了該軟件的功能結(jié)構(gòu)示意圖,機(jī)房管理員通過人機(jī)界面調(diào)用執(zhí)行諸功能模塊,文本文件組則在VB程序與批處理程序間起著數(shù)據(jù)傳遞中介的作用.
圖1 機(jī)房計算機(jī)管理軟件功能結(jié)構(gòu)示意Fig.1 The schematic diagram of function structure of the software for computer room management
批量關(guān)機(jī)模塊逐一檢測各計算機(jī)是否處于開機(jī)狀態(tài),若開機(jī),則將其關(guān)閉;批量重啟模塊逐一檢測各計算機(jī)是否處于開機(jī)狀態(tài),若開機(jī),則將其重啟;取消關(guān)機(jī)/重啟模塊則能取消此前的關(guān)機(jī)或重啟操作.3個模塊均使用了命令解釋器提供的shutdown命令,該命令帶-s和-m參數(shù)可實(shí)現(xiàn)遠(yuǎn)程關(guān)機(jī),帶-r和-m參數(shù)可實(shí)現(xiàn)遠(yuǎn)程重啟,帶-a和-m參數(shù)可取消此前的關(guān)機(jī)或重啟操作,還可通過-t參數(shù)設(shè)置關(guān)機(jī)延時的時長.以批量關(guān)機(jī)模塊為例,主要代碼如下:
for /l %%i in (!d!,1,!e!) do (
ping -n 1 !a!.!b!.!c!.%%i>nul
if !errorlevel!== 0 shutdown -t !time! -s
-m !a!.!b!.!c!.%%i
)
命令解釋器中ping命令的工作原理是向?qū)Ψ接嬎銠C(jī)發(fā)送ICMP數(shù)據(jù)包,依據(jù)收到包的數(shù)量來判斷網(wǎng)絡(luò)的連通性.本模塊可逐一檢測局域網(wǎng)中計算機(jī)的連通性,并將檢測信息和因故障未入網(wǎng)計算機(jī)的IP分別保存在文本文件testinf.txt 和failurereport.txt中,以備查看.主要代碼如下:
for /l %%i in (!d!,1,!e!) do (
ping !a!.!b!.!c!.%%i>>testinf.txt
if !errorlevel!==1 echo !a!.!b!.!
c!.%%i>>failurereport.txt
)
局域網(wǎng)消息發(fā)送功能需要Windows系統(tǒng)信使服務(wù)(Messenger Service)的支持,當(dāng)該服務(wù)開啟時,在發(fā)送端使用net send命令發(fā)送消息,接收端便彈出用于顯示消息的名為“信使服務(wù)”的對話框.本模塊先從文本文件message.txt中提取待發(fā)送的消息內(nèi)容(消息內(nèi)容是由人機(jī)界面接受并保存于message.txt文件中的),再向局域網(wǎng)中全部計算機(jī)發(fā)送該消息.主要代碼如下:
set /P mess= net send * "!mess!" 命令解釋器中的nbtstat命令,可通過對方計算機(jī)的IP地址查看NetBIOS的相關(guān)信息,其中含有對方網(wǎng)卡的MAC地址,findstr命令則可在此基礎(chǔ)上將MAC地址單獨(dú)提取出來.本模塊通過聯(lián)合使用nbtstat和findstr命令,獲取所有處于開機(jī)狀態(tài)計算機(jī)的MAC地址,保存于文本文件中,供遠(yuǎn)程喚醒子模塊使用.主要代碼如下: for /l %%i in (!d!,1,!e!) do ( ping -n 1 !a!.!b!.!c!.%%i>nul if !errorlevel!==0 nbtstat -a !a!.!b!.!c!.%%i>>mac1.txt ) findstr "MAC" mac1.txt>>mac2.txt 遠(yuǎn)程喚醒(Wake-on-LAN,WOL) 是在計算機(jī)電源、主板和網(wǎng)卡等設(shè)備支持該功能的前提下,通過向處于半工作狀態(tài)的網(wǎng)卡發(fā)送特定數(shù)據(jù)包,以實(shí)現(xiàn)計算機(jī)從停機(jī)狀態(tài)自動啟動的一種遠(yuǎn)程控制技術(shù).所發(fā)特定數(shù)據(jù)包的內(nèi)容是FFFFFFFFFFFF加上16遍對方網(wǎng)卡的MAC地址,所需MAC地址由此前介紹過的MAC地址掃描子模塊來提供.假設(shè)對方網(wǎng)卡的MAC地址為00-11-22-33-44-55,那么數(shù)據(jù)包的內(nèi)容應(yīng)為:FFFFFFFFFFFF00112233445500112233445500 112233445500112233445500112233445500112233445 500112233445500112233445500112233445500112233 445500112233445500112233445500112233445500112 2334455001122334455001122334455.網(wǎng)卡收到數(shù)據(jù)包后與自己的MAC地址相比較,如果相同,便會向主板發(fā)送開機(jī)信號,使計算機(jī)自動開啟.本模塊用到VB中的Winsock控件,該控件可通過使用TCP或UDP協(xié)議與遠(yuǎn)程計算機(jī)交換數(shù)據(jù).主要代碼如下: With Winsock1 .RemoteHost = "255.255.255.255" ’廣播發(fā)送 .Protocol = sckUDPProtocol ’使用UDP協(xié)議 .RemotePort = 7 ’接收端端口號 .LocalPort = 7 ’發(fā)送端端口號 .Bind 7 ’綁定端口 End With 參數(shù)配置模塊用于接受并保存管理員對軟件參數(shù)的設(shè)置,使軟件能夠適應(yīng)不同機(jī)房的具體情況.修改后的參數(shù)會通過Label控件即時顯示于界面上,并同時保存在相應(yīng)的文本文件中,供其他功能模塊使用.為保證輸入?yún)?shù)形式上的合法性,本模塊設(shè)計了相應(yīng)的判斷機(jī)制,當(dāng)輸入非法時,會有消息框給出提示. 人機(jī)界面使用若干Text控件、Label控件和Command控件實(shí)現(xiàn)交互,功能相近或圍繞同一功能設(shè)置的控件置于同一框架中,清晰簡潔、便于操作.當(dāng)管理員單擊標(biāo)明功用的按鈕時,會通過Shell函數(shù)調(diào)用執(zhí)行由批處理編寫的相應(yīng)功能模塊,完成相應(yīng)任務(wù).以調(diào)用執(zhí)行MAC地址掃描子模塊為例,主要代碼如下: Dim i i = Shell("macscan.bat", 0) 其中,“0”表示窗口隱藏,即看不到批處理模塊運(yùn)行時的窗口. VB與批處理兩種不同語言編寫的程序間是無法通過直接讀取對方變量的值來傳遞數(shù)據(jù)的,好在VB與批處理均可對文本文件進(jìn)行讀寫操作,于是可以利用文本文件做中介實(shí)現(xiàn)數(shù)據(jù)傳遞.VB采用Line Input # 語句和Write # 語句分別來實(shí)現(xiàn)文件的讀和寫,批處理使用重定向符號<、>、>>來讀寫文件.例如,參數(shù)配置模塊接收輸入的IP地址后,要先寫入文本文件后才能被基于批處理的功能模塊讀取使用.VB向文本文件寫數(shù)據(jù)的代碼如下: Open "ipa.txt" For Output As #1 ’向文件ipa.txt寫數(shù)據(jù) ipw1 = Text1.Text Write #1, ipw1 Close #1 Open "ipb.txt " For Output As #1 ’向文件ipb.txt寫數(shù)據(jù) ipw2 = Text2.Text Write #1, ipw2 Close #1 Open "ipc.txt " For Output As #1 ’向文件ipc.txt寫數(shù)據(jù) ipw3 = Text3.Text Write #1, ipw3 Close #1 Open "ipd.txt " For Output As #1 ’向文件ipd.txt寫數(shù)據(jù) ipw4 = Text4.Text Write #1, ipw4 Close #1 批處理從文本文件讀數(shù)據(jù)的代碼如下: set /p a= set /p b= set /p c= set /p d= 本文設(shè)計實(shí)現(xiàn)的機(jī)房計算機(jī)管理軟件,發(fā)掘了批處理的強(qiáng)大功能,利用了VB在開發(fā)具有圖形用戶界面軟件方面的優(yōu)勢,在VB與批處理聯(lián)合進(jìn)行程序開發(fā)方面做出了探索.開發(fā)出的軟件具有使用簡便、占用空間小、綠色免安裝等特點(diǎn).目前,該軟件已應(yīng)用于機(jī)房計算機(jī)的管理,其各項(xiàng)功能運(yùn)行良好,部分性能優(yōu)于同類商業(yè)軟件,能有效降低管理員的工作強(qiáng)度,提高機(jī)房的管理效率和管理水平.該軟件設(shè)計思想同樣可用于其他數(shù)字化設(shè)備的批量管理. 參考文獻(xiàn): [1] 孫秀梅,安劍,劉彬彬.Visual Basic開發(fā)技術(shù)大全[M].2版.北京:人民郵電出版社,2009. [2] 劉寶山,李丕瑾.程序設(shè)計基礎(chǔ)——Visual Basic 6.0案例教程[M].2版.北京:機(jī)械工業(yè)出版社,2009. [3] 梁麗平,黃平,黃振中.Visual Basic程序設(shè)計[M].2版.北京:北京理工大學(xué)出版社,2007. [4] DOS批處理高級教程精選合編[DB/OL]. http://wenku.baidu.com/view/e3a92bf90242a8956bece481.html. [5] TIMOTHY P.自學(xué)TCP/IP十四日通[M].北京:學(xué)苑出版社,1994. [6] 鄒縣芳,張發(fā)凌.DOS在網(wǎng)絡(luò)管理及故障診斷中的典型應(yīng)用[M].北京:人民郵電出版社,2007. [7] AMD.Magic Packet Technology white paper [DB/OL]. http://www.amd.com/products/npd/overview/20212.html.1998.3.4 MAC地址掃描子模塊[6]
3.5 遠(yuǎn)程喚醒子模塊[7]
3.6 參數(shù)配置模塊
3.7 人機(jī)界面
3.8 VB程序與批處理程序間的數(shù)據(jù)傳遞
4 結(jié) 語