林素仙 宋俊鋒
摘要: 由于計(jì)算機(jī)硬件的不斷更新?lián)Q代,以及軟件發(fā)展呈現(xiàn)WEB化的趨勢,這給高校機(jī)房管理者提出了更高的要求。文章以機(jī)房管理人員的角度,根據(jù)日常管理中遇到的遠(yuǎn)程控制不方便、病毒查找困難、突發(fā)情況難以處理及半手工化操作落后并效率低等問題,設(shè)計(jì)并實(shí)現(xiàn)了無需客戶端支持的基于B/S模式的機(jī)房運(yùn)行支撐平臺(tái),管理人員可以實(shí)時(shí)隨地利用PC終端或移動(dòng)手持設(shè)備借助該平臺(tái),實(shí)時(shí)地進(jìn)行機(jī)房遠(yuǎn)程監(jiān)控和管理,提高機(jī)房管理效率及應(yīng)急能力。
關(guān)鍵詞: 遠(yuǎn)程管理; B/S模式; WMI; 病毒檢測
中圖分類號:TP319文獻(xiàn)標(biāo)識(shí)碼:A文章編號:1006-8228(2012)04-65-03
An approach to develop college computer room management supporting platform based on B/S Mode
Lin Suxian, Song Junfeng
(Lishui university, Lishui, Zhejiang 323000, China)
Abstract: With development of computer hardware and trend of software development to web-based style, college computer room managers pursue a convenient, stable and efficient environment. As daily management of remote control is not convenient, search of virus is difficult, solutions of emergency situation are not enough, and operation is semi-manual, the authors of this paper introduce a computer room management supporting platform based on B/S mode with no client support. Then managers could use PC terminals or mobile devices to monitor and manage computer rooms whenever and wherever.
Key words: remote management; B/S mode; WMI; virus detection
0 引言
當(dāng)前,高校計(jì)算機(jī)機(jī)房的半手工化管理已然跟不上硬件發(fā)展的步伐。雖然為每臺(tái)計(jì)算機(jī)安裝還原卡可以給軟件的批量安裝及數(shù)據(jù)保護(hù)提供較好的解決方案,但是,機(jī)房軟硬件及網(wǎng)絡(luò)環(huán)境復(fù)雜,經(jīng)常還會(huì)出現(xiàn)異常情況,需要實(shí)時(shí)處理。目前針對機(jī)房網(wǎng)絡(luò)管理的輔助軟件都是C/S模式,需要在局域網(wǎng)環(huán)境下安裝客戶端軟件才能實(shí)現(xiàn)對計(jì)算機(jī)的控制[1]。我們從機(jī)房管理人員的角度,利用C#網(wǎng)絡(luò)編程語言,開發(fā)了一套無需客戶端支持的基于B/S的機(jī)房管理支撐平臺(tái)。通過此平臺(tái),管理人員可以隨時(shí)隨地利用PC終端或移動(dòng)手持設(shè)備進(jìn)行機(jī)房遠(yuǎn)程監(jiān)控和管理,提高機(jī)房管理效率及應(yīng)急能力。
1 機(jī)房管理支撐平臺(tái)的設(shè)計(jì)
根據(jù)機(jī)房管理人員經(jīng)驗(yàn),機(jī)房管理費(fèi)力之處有以下幾方面:⑴日常維護(hù)中開關(guān)機(jī)時(shí)需手工操作;⑵遠(yuǎn)程控制、運(yùn)行命令和批量操作不方便;⑶現(xiàn)有機(jī)房管理軟件基本為C/S模式,安裝繁瑣;⑷病毒查找困難,特別是局域網(wǎng)病毒容易導(dǎo)致批量中毒;⑸突發(fā)情況處理困難。根據(jù)這些難點(diǎn),本文設(shè)計(jì)了局域網(wǎng)機(jī)房管理支撐平臺(tái)。該平臺(tái)具有遠(yuǎn)程管理,病毒管理,設(shè)備更新和維修記錄等功能,如圖1所示。
圖1機(jī)房運(yùn)行支撐平臺(tái)功能
機(jī)房運(yùn)行支撐平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)技術(shù)說明如下。
如今,軟件的功能在網(wǎng)絡(luò)上實(shí)現(xiàn)是信息處理的必然趨勢。網(wǎng)上瀏覽、交換和處理信息,是網(wǎng)絡(luò)時(shí)代重要的特征,Web編程技術(shù)就是為網(wǎng)上信息交流服務(wù)的。傳統(tǒng)的單機(jī)版軟件,市場越來越小,即使是利用網(wǎng)絡(luò)的C/S軟件,因?yàn)橐惭b客戶端,推廣和使用受限。而采用Web編程技術(shù)的B/S軟件,以通用的瀏覽器作為客戶端,實(shí)現(xiàn)信息交換和處理,不需要安裝和維護(hù)客戶端軟件,具有極大的優(yōu)越性。本系統(tǒng)部署在與機(jī)房所處的校園網(wǎng)內(nèi),提供了在校外訪問該系統(tǒng)進(jìn)行機(jī)房管理的通道。機(jī)房管理支撐平臺(tái)的部署如圖2所示。
圖2機(jī)房管理支撐平臺(tái)部署圖
下面將介紹我們在C#網(wǎng)絡(luò)編程環(huán)境中所用到的類和對象。
Internet在傳輸層上有兩個(gè)主要協(xié)議,面向連接協(xié)議(TCP)和無連接協(xié)議(UDP)[2],根據(jù)如圖3所示兩種協(xié)議的優(yōu)劣,平臺(tái)的不同功能將用到不同的協(xié)議。
[比較項(xiàng)目&TCP協(xié)議&UDP協(xié)議&是否連接&面向連接&面向非連接&傳輸可靠性&可靠&不可靠&應(yīng)用場合&傳輸大量的數(shù)據(jù)&傳輸少量的數(shù)據(jù)&傳輸速度&慢&快&]
圖3UDP協(xié)議與TCP協(xié)議的區(qū)別
多線程是提高機(jī)房管理效率所要涉及到的網(wǎng)絡(luò)通信模式。通過Thread類可創(chuàng)建多個(gè)線程。
開發(fā)機(jī)房管理支撐平臺(tái)用到的類主要有IPAddress類、DNS類、IPHostEntry類、和UDP下的UdpClient類。
IIPAddress類的對象用于表示一個(gè)IP地址,其中有兩種常用的方法用來創(chuàng)建和操作IP地址:Parse()方法,將IP地址字符串轉(zhuǎn)換為IPAddress實(shí)例;ToString()方法,將Internet地址轉(zhuǎn)換為標(biāo)準(zhǔn)表示法。
DNS類提供簡單的域名解析功能。GetHostByAddress()方法是DNS類公共方法,用于獲取相應(yīng)IP地址的DNS主機(jī)信息。
IPHostEntry類將一個(gè)域名系統(tǒng)主機(jī)名與一組別名以及一組相匹配的IP地址關(guān)聯(lián)起來。類中HostName()方法是獲取或設(shè)置主機(jī)的DNS名稱。
UdpClient類是提供了接收、發(fā)送UDP數(shù)據(jù),開啟、關(guān)閉連接等功能。類中的Connect(IPAddress address, int port)方法用于指定用于發(fā)送和接收數(shù)據(jù)的IP地址和端口號。Send(byte[] dgram, int bytes)方法用于將UDP數(shù)據(jù)文報(bào)發(fā)送到遠(yuǎn)程主機(jī)。
2 機(jī)房運(yùn)行支撐平臺(tái)主要功能實(shí)現(xiàn)
2.1 掃描機(jī)房
支撐平臺(tái)第一次掃描批量電腦設(shè)備時(shí),保證電腦全開機(jī),把所管轄的機(jī)子信息(如IP地址,機(jī)器名,Mac地址等)記錄到機(jī)房管理支撐平臺(tái)的數(shù)據(jù)庫中。相應(yīng)程序編寫思路是,通過ping命令查詢所有IP在某個(gè)網(wǎng)段內(nèi)的機(jī)子(如起始IP為10.30.120.1,終止IP為10.30.120.254),返回ping命令得到的信息。并把有響應(yīng)的IP地址記錄在數(shù)據(jù)庫中,再通過循環(huán)發(fā)送帶有IP地址的數(shù)據(jù)包,查詢每臺(tái)機(jī)子的機(jī)器名、MAC地址等。分別記錄在相應(yīng)的數(shù)據(jù)庫表中。
2.2 遠(yuǎn)程批量喚醒
遠(yuǎn)程批量喚醒功能有硬件要求。首先,網(wǎng)卡應(yīng)具備喚醒功能,即網(wǎng)卡所帶的控制芯片是計(jì)算機(jī)電源的專用線路供電的,(現(xiàn)在的網(wǎng)卡幾乎都支持)。其次,機(jī)器應(yīng)接入網(wǎng)絡(luò)。如果要喚醒批量機(jī)子,其工作原理是:通過程序循環(huán)向網(wǎng)絡(luò)中發(fā)出一個(gè)基于Magic Packet標(biāo)準(zhǔn)的喚醒數(shù)據(jù)包,該數(shù)據(jù)包中含有欲被喚醒的計(jì)算機(jī)所帶網(wǎng)卡的MAC地址。當(dāng)網(wǎng)卡中相應(yīng)的控制芯片通過檢查數(shù)據(jù)包內(nèi)的MAC地址,發(fā)現(xiàn)并且確認(rèn)數(shù)據(jù)是發(fā)給自己時(shí),就通過專用線路發(fā)出開啟電源信號,通知主板開機(jī)啟動(dòng);否則將該數(shù)據(jù)包丟棄。
Magic Packet是AMD公司開發(fā)推廣的一項(xiàng)技術(shù)。根據(jù)Magic Packet標(biāo)準(zhǔn),喚醒數(shù)據(jù)包以6字節(jié)的FF為起始位,之后再跟上重復(fù)16次的被控主機(jī)的網(wǎng)卡MAC地址,總共數(shù)據(jù)幀長度為102個(gè)字節(jié)[3]。例如,如果目標(biāo)主機(jī)的MAC地址是00-1B-B9-F5-4F-88,則先定義數(shù)據(jù)包的格式為Magic Packet格式,通過語句構(gòu)造出數(shù)據(jù)包為FF FF FF FF FF FF 00 1B B9 F5 4F 88 00 1B B9 F5 4F 88 00 1B B9 F5 4F 88 00 1B B9 F5 4F 88 00 1B B9 F5 4F 88 00 1B B9 F5 4F 88 00 1B B9 F5 4F 88 00 1B B9 F5 4F 88 00 1B B9 F5 4F 88 00 1B B9 F5 4F 88 00 1B B9 F5 4F 88 00 1B B9 F5 4F 88 00 1B B9 F5 4F 88 00 1B B9 F5 4F 88 00 1B B9 F5 4F 88 00 1B B9 F5 4F 88 00 1B B9 F5 4F 88 00 1B B9 F5 4F 88,然后進(jìn)行批量發(fā)送,最終符合條件的主機(jī)被喚醒。其主要代碼如下所示。
byte[] packet = new byte[17 * 6];
for (i = 0; i < 6; i++)//構(gòu)造數(shù)據(jù)包前6個(gè)字節(jié)的數(shù)據(jù)是ff-ff-ff-ff-ff-ff。
{packet[i] = 0xFF; }
for (i = 1; i < 17; i++)
for (j = 0; j < 6; j++)
packet[i * 6 + j] = mac[j];
UdpClient client = new UdpClient();//創(chuàng)建UDP的數(shù)據(jù)對象。
client.Connect(目標(biāo)IP, 30000); //設(shè)置參數(shù),IP地址和端口。
client.Send(packet, packet.Length);//將UDP喚醒數(shù)據(jù)包發(fā)出。
2.3 遠(yuǎn)程批量關(guān)機(jī)/重啟
遠(yuǎn)程批量關(guān)機(jī)/重功能啟用到WMI(Windows Management Instrumentation)協(xié)議該協(xié)議全稱“Windows管理規(guī)范”,是一項(xiàng)核心的 Windows 管理技術(shù),采用一個(gè)統(tǒng)一的、基于標(biāo)準(zhǔn)的、可擴(kuò)展的面向?qū)ο蠼涌?,提供了?qiáng)大的功能,包括腳本API、遠(yuǎn)程管理、查尋、事件處理等[4]。比如,可利用WMI在遠(yuǎn)程計(jì)算機(jī)上啟動(dòng)一個(gè)主機(jī)或特定的進(jìn)程(但僅適用于基于Windows的操作系統(tǒng))。C# 網(wǎng)絡(luò)編程語言對WMI提供了全面的支持。.Net FrameWork SDK封裝了一個(gè)專門的命名空間“System.Management”,含有大量用以處理和WMI相關(guān)的類、接口和枚舉。下面闡述“System.Management”的兩種用到的類。
ManagementScope類,通過ManagementScope類能夠建立和遠(yuǎn)程計(jì)算機(jī)的WMI連接,表示管理可操作范圍。通過類中的Connect()方法,可以建立與遠(yuǎn)程計(jì)算機(jī)的WMI連接。
ManagementObjectSearcher類。主要功能是根據(jù)指定的查詢條件檢索WMI對象的集合。它通過Get()方法進(jìn)行WMI查詢,并把得到的結(jié)果集合。Get方法的返回值是一個(gè)ManagementObjectCollection實(shí)例,它包含匹配指定查詢的對象。具體實(shí)現(xiàn)遠(yuǎn)程批量關(guān)機(jī)/重啟的主要代碼如下:
ConnectionOptions op = new ConnectionOptions();
ManagementScope scope = new ManagementScope("\\" + ip + "\root\cimv2", op); //設(shè)置操作管理范圍。
scope.Connect();//將此ManagementScope 連接到實(shí)際WMI
范圍。
ObjectQuery oq = new ObjectQuery("SELECT * FROM Win32_OperatingSystem");
ManagementObjectSearcher query = new ManagementObjectSearcher(scope, oq);
ManagementObjectCollection queryCollection = query.Get();//得到WMI控制。
foreach (ManagementObject obj in queryCollection)
{
obj.InvokeMethod("reboot", null); //執(zhí)行關(guān)閉遠(yuǎn)程計(jì)算機(jī),reboot為重新啟動(dòng)。
obj.InvokeMethod("ShutDown", null); //執(zhí)行關(guān)閉遠(yuǎn)程計(jì)算機(jī),reboot為關(guān)機(jī)。
}
2.4 遠(yuǎn)程命令
遠(yuǎn)程命令就是在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行用戶提交的DOS命令。設(shè)計(jì)此功能的主要原因是此命令可以即時(shí)運(yùn)行,在不影響機(jī)房正常運(yùn)行的情況下改變系統(tǒng)的某些狀態(tài)或數(shù)據(jù),例如創(chuàng)建文件夾或者自動(dòng)安裝軟件等。主要代碼如下:
ConnectionOptions connOption = new ConnectionOptions();//ConnectionOptions指定生成wmi連接所需的設(shè)置。 ManagementPath mngPath = new ManagementPath(@"\" + serverHostName +@" ootcimv2:Win32_Process");//ManagementPath 包裝了生成和分析wmi對象的路徑。
ManagementScope scope = new ManagementScope(mngPath, connOption);
scope.Connect();
ObjectGetOptions objOption = new ObjectGetOptions();//ObjectGetOptions 類是指定用于獲取管理對象的選項(xiàng)。
ManagementClass classInstance = new ManagementClass
(scope, mngPath, objOption); //通過該類的成員,可以使用特。
定的 WMI 類路徑訪問 WMI 數(shù)據(jù)。
object[] cmdline = { "cmd /c " + strCommand, path, null, 0 };//調(diào)用執(zhí)行命令的方法,采用命令行。
classInstance.InvokeMethod("Create", cmdline);
2.5 病毒檢測
病毒是網(wǎng)絡(luò)中不可避免的,預(yù)防和解決病毒,是保證穩(wěn)定、高效使用主機(jī)等設(shè)備的前提。多數(shù)人認(rèn)為,機(jī)房的電腦都裝有還原卡,中了病毒也沒關(guān)系,只要重啟機(jī)子就能還原到正常狀態(tài)。確實(shí),如果某一臺(tái)電腦中毒,并且不影響其它電腦正常工作時(shí),只需重啟即可,不影響機(jī)房的正常運(yùn)行。然而有兩種情況需要管理人員高度重視。一是某些病毒能穿透市場上主流的還原卡,讓病毒本身保留在系統(tǒng)中,重啟不能將系統(tǒng)還原。二是如ARP之類的病毒,在發(fā)作的特征時(shí)候中毒的電腦能正常上網(wǎng),而機(jī)房中的其他電腦則出現(xiàn)網(wǎng)絡(luò)時(shí)好時(shí)壞的情況;而且此類病毒定位麻煩,對管理人員專業(yè)知識(shí)要求較高,給正常的教學(xué)帶來很大的麻煩。
防御機(jī)房病毒的關(guān)鍵是要處理以上兩種情況。對于第一種,還原卡被穿透之后,病毒往往會(huì)在系統(tǒng)啟動(dòng)項(xiàng)中保留啟動(dòng)信息。因此,可以利用WMI協(xié)議實(shí)現(xiàn)對機(jī)房電腦啟動(dòng)項(xiàng)的批量掃描,如果發(fā)現(xiàn)異常則能快速定位故障機(jī)器。而針對第二種(ARP病毒)情況,可以采取如下的方式處理:ARP病毒通常將自己的MAC地址偽造成網(wǎng)關(guān)的地址,讓往外發(fā)送的數(shù)據(jù)都經(jīng)過它[5],因此,可以在機(jī)房在正常狀態(tài)時(shí),進(jìn)行MAC和機(jī)器名的對應(yīng)信息的掃描并保存。如果發(fā)現(xiàn)機(jī)房中出現(xiàn)類似ARP病毒的癥狀,可以對機(jī)房的MAC和機(jī)器名對應(yīng)信息重新掃描,然后將掃描結(jié)果與原始信息進(jìn)行比對,如果發(fā)現(xiàn)比對結(jié)果不同,則可以對故障機(jī)進(jìn)行處理。
3 結(jié)束語
機(jī)房管理人員對機(jī)房管理過程中出現(xiàn)的各種各樣的問題,需要及時(shí)解決,但是如何在不打斷上課的同時(shí)找到問題的根源并及時(shí)解決是一大難題。本文設(shè)計(jì)的這個(gè)平臺(tái),基本實(shí)現(xiàn)了批量喚醒、重啟、關(guān)機(jī)、遠(yuǎn)程命令、病毒檢測等功能,可有效地提高機(jī)房管理效率。但網(wǎng)絡(luò)環(huán)境復(fù)雜、在代碼優(yōu)化方面需要進(jìn)一步研究,以加強(qiáng)軟件的穩(wěn)定性。
參考文獻(xiàn):
[1] 羅建,探討計(jì)算機(jī)機(jī)房的管理與維護(hù)[J].電腦編程技巧與維護(hù),2011.2:101~102
[2] 梅曉冬,顏燁青,Visual C#網(wǎng)絡(luò)編程技術(shù)與實(shí)踐[M].清華大學(xué)出版社,2008.
[3] 張立成,基于IP 單播的遠(yuǎn)程喚醒研究及實(shí)現(xiàn)[J].軟件導(dǎo)刊 2010.3(9)3:108~109
[4] 吳江川,饒一梅,Windows下基于WMI的數(shù)據(jù)和程序管理解決方案[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2010.19(7):126~129
[5] 肖川豫,陳孟,劉晟,汪磊,交換機(jī)監(jiān)測與ARP欺騙主動(dòng)防御系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[J].計(jì)算機(jī)時(shí)代,2011.1(1):20~22