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