王 華,饒傳新,馬思銳,汪 軍
(宜昌市氣象局,宜昌 443000)
氣象觀測(cè)數(shù)據(jù)是開(kāi)展氣象預(yù)報(bào)預(yù)警服務(wù)的基礎(chǔ),其傳輸?shù)臅r(shí)效性嚴(yán)重影響著服務(wù)的質(zhì)量。因此,保障觀測(cè)數(shù)據(jù)傳輸?shù)募皶r(shí)率一直是氣象信息部門(mén)的重要任務(wù)。在影響數(shù)據(jù)傳輸及時(shí)率的因素當(dāng)中,網(wǎng)絡(luò)是重要因素之一。為此,湖北省氣象局在氣象專(zhuān)線網(wǎng)絡(luò)的基礎(chǔ)上,建立了VPN網(wǎng)絡(luò)作為備份網(wǎng)絡(luò)。該VPN網(wǎng)絡(luò)采用安達(dá)通VPN網(wǎng)絡(luò)安全互聯(lián)解決方案,各地市(州)、縣氣象局臺(tái)站通過(guò)USB Key認(rèn)證的方式接入。USB Key一般部署在負(fù)責(zé)數(shù)據(jù)采集的電腦上,當(dāng)專(zhuān)線網(wǎng)絡(luò)出現(xiàn)故障時(shí),值班人員通過(guò)打開(kāi)VPN客戶(hù)端軟件并執(zhí)行登錄操作來(lái)實(shí)現(xiàn)VPN網(wǎng)絡(luò)的連接。
手動(dòng)啟用VPN網(wǎng)絡(luò)的方式在非值守時(shí)段和無(wú)人值守業(yè)務(wù)中存在兩點(diǎn)不足:一是難以及時(shí)發(fā)現(xiàn)氣象專(zhuān)線網(wǎng)絡(luò)故障;二是在遠(yuǎn)程屏幕共享無(wú)效的情況下,只能到現(xiàn)場(chǎng)進(jìn)行VPN網(wǎng)絡(luò)連接操作。這兩點(diǎn)不足導(dǎo)致故障的排除時(shí)間無(wú)法滿足數(shù)據(jù)傳輸時(shí)效性要求,對(duì)數(shù)據(jù)傳輸及時(shí)率存在一定影響。
文章針對(duì)手動(dòng)啟用VPN網(wǎng)絡(luò)存在的不足,提出基于Ping命令進(jìn)行氣象專(zhuān)線網(wǎng)絡(luò)連通性監(jiān)測(cè)、基于大漠插件和按鍵精靈進(jìn)行模擬鼠標(biāo)鍵盤(pán)操作的改進(jìn)方案,并開(kāi)發(fā)了相應(yīng)的軟件,實(shí)現(xiàn)了安達(dá)通VPN客戶(hù)端的自動(dòng)啟動(dòng)和登錄操作。在實(shí)際應(yīng)用中,該軟件能夠及時(shí)主動(dòng)發(fā)現(xiàn)專(zhuān)線網(wǎng)絡(luò)故障,減少了手動(dòng)操作,提高了觀測(cè)數(shù)據(jù)傳輸?shù)募皶r(shí)率。
基于USB Key認(rèn)證的安達(dá)通VPN網(wǎng)絡(luò)需要手動(dòng)連接的原因是:1)缺乏專(zhuān)線網(wǎng)絡(luò)故障監(jiān)測(cè)機(jī)制,即無(wú)法確定何時(shí)啟動(dòng)安達(dá)通VPN客戶(hù)端;2)安達(dá)通VPN客戶(hù)端啟動(dòng)后,需要與用戶(hù)交互,如選擇認(rèn)證方式、輸入密碼等操作。即使保存了相關(guān)參數(shù),也需要點(diǎn)擊界面上的“登錄”按鈕執(zhí)行連接操作。安達(dá)通VPN客戶(hù)端登錄界面協(xié)議有http和https兩個(gè)選項(xiàng);認(rèn)證方式有用戶(hù)名/密碼、數(shù)字證書(shū)和USBKEY 3個(gè)選項(xiàng)。
由上述分析可知,解決專(zhuān)線網(wǎng)絡(luò)監(jiān)測(cè)和VPN客戶(hù)端自動(dòng)交互是實(shí)現(xiàn)安達(dá)通VPN網(wǎng)絡(luò)自動(dòng)連接的關(guān)鍵。
文章采用Ping進(jìn)行網(wǎng)絡(luò)監(jiān)測(cè)。Ping是常用的網(wǎng)絡(luò)診斷工具,它既是Windows、Linux和Unix操作系統(tǒng)下的一個(gè)命令,也是通信協(xié)議TCP/IP的一部分,利用它可以檢查網(wǎng)絡(luò)是否連通[1-3]。利用操作系統(tǒng)控制臺(tái)的Ping命令無(wú)法滿足網(wǎng)絡(luò)連通測(cè)試自動(dòng)化的要求,因此,文章在MFC框架下,利用socket網(wǎng)絡(luò)編程實(shí)現(xiàn)了Ping功能。網(wǎng)絡(luò)監(jiān)測(cè)的基本原理是:定期(如每隔6 min)利用Ping命令向目標(biāo)IP地址發(fā)送4個(gè)數(shù)據(jù)包,計(jì)算4個(gè)數(shù)據(jù)包的平均響應(yīng)時(shí)間,若平均響應(yīng)時(shí)間大于1000 ms,則判定為網(wǎng)絡(luò)故障(無(wú)故障情況下平均響應(yīng)時(shí)間不超過(guò)50 ms);反之,則網(wǎng)絡(luò)正常。需要注意的是,在目標(biāo)服務(wù)器出現(xiàn)故障的情況下,平均響應(yīng)時(shí)間也很長(zhǎng),但此時(shí)不能判定為網(wǎng)絡(luò)故障,因此,還需要檢測(cè)到達(dá)目標(biāo)IP的上一跳IP是否正常,只有兩者均不可達(dá)時(shí),才判定為網(wǎng)絡(luò)故障。
模擬鼠標(biāo)鍵盤(pán)的作用是自動(dòng)執(zhí)行設(shè)定的鼠標(biāo)鍵盤(pán)操作,而無(wú)需人工干預(yù)。在模擬鼠標(biāo)鍵盤(pán)方面,大漠插件和按鍵精靈是兩款優(yōu)秀的工具。大漠插件(dm.dll)是一款集前后臺(tái)、文字識(shí)別、圖色、按鍵鼠標(biāo)、窗口和內(nèi)存等功能于一身的綜合插件,它由Microsoft Visual C++ 6.0編程環(huán)境下的COM接口編程實(shí)現(xiàn),適用于所有語(yǔ)言的調(diào)用[4];按鍵精靈是一款模擬鼠標(biāo)鍵盤(pán)動(dòng)作的軟件,通過(guò)它不需要任何編程知識(shí)就可以寫(xiě)出功能強(qiáng)大的腳本。通過(guò)腳本,可以讓按鍵精靈代替雙手,自動(dòng)執(zhí)行一系列鼠標(biāo)鍵盤(pán)動(dòng)作[5,6]。按鍵小精靈是腳本經(jīng)過(guò)按鍵精靈軟件編譯后生成的可執(zhí)行文件,它可以脫離按鍵精靈軟件環(huán)境獨(dú)立執(zhí)行。
無(wú)論是采用大漠插件還是按鍵精靈進(jìn)行模擬鼠標(biāo)鍵盤(pán)操作,首先要確定的是鼠標(biāo)鍵盤(pán)操作的位置,即軟件界面元素的屏幕坐標(biāo)。圖1給出了軟件界面元素屏幕坐標(biāo)與屏幕分辨率、軟件窗口屏幕初始位置間的關(guān)系。圖1中:屏幕左上方為坐標(biāo)原點(diǎn);px_x0、px_y0分別為屏幕的橫向、縱向分辨率;(x0,y0)為軟件打開(kāi)時(shí)的初始屏幕坐標(biāo);(xn,yn)為軟件界面上某個(gè)元素的屏幕坐標(biāo);Δxn、Δyn是(xn,yn)相對(duì)于(x0,y0)的坐標(biāo)偏移量,為定值,不隨屏幕分辨率的改變而改變,其值可以通過(guò)按鍵精靈的“抓抓”功能獲得;x0、y0分別與屏幕的橫向、縱向分辨率存在一元線性關(guān)系。因此,只要能確定圖中的關(guān)系式,便可間接獲得軟件界面上元素在任意屏幕分辨率下的屏幕坐標(biāo)。
圖1 軟件界面元素屏幕位置與屏幕分辨率、軟件窗口屏幕初始位置間的關(guān)系
設(shè)置不同的屏幕分辨率,在每一種屏幕分辨率下打開(kāi)安達(dá)通客戶(hù)端,利用按鍵精靈的“抓抓”功能獲取軟件的初始屏幕位置,并記錄屏幕分辨率和相應(yīng)的軟件初始位置數(shù)據(jù)。對(duì)兩組數(shù)據(jù)進(jìn)行一元線性擬合,得到的擬合關(guān)系如圖2所示。圖中,y=0.5x-180、y=0.5x-146分別為安達(dá)通客戶(hù)端屏幕初始位置的橫坐標(biāo)、縱坐標(biāo)與屏幕橫向、縱向分辨率間的擬合關(guān)系式,擬合優(yōu)度均為1.00。
圖2 安達(dá)通客戶(hù)端屏幕初始坐標(biāo)與屏幕分辨率間擬合關(guān)系
由以上關(guān)系式,很容易準(zhǔn)確地獲取安達(dá)通客戶(hù)端界面元素的屏幕位置。例如:安達(dá)通客戶(hù)端界面元素“登錄(L)”按鈕相對(duì)于界面的偏移量為(134,253),則在1024×768的屏幕分辨率下,其屏幕坐標(biāo)為:x1=0.5×1024-180+134=466,y1=0.5×768-146+253=491;在1920×1080的屏幕分辨率下,其屏幕坐標(biāo)為:x2=0.5×1920-180+134=914,y2=0.5×1080-146+253=647。
目標(biāo)服務(wù)器IP地址指的是臺(tái)站觀測(cè)數(shù)據(jù)最終需要送達(dá)的地址;服務(wù)器上一跳地址指的是通過(guò)tracert路由追蹤命令得到的倒數(shù)第2條路由地址;安達(dá)通VPN安裝路徑指的是可執(zhí)行文件TpnMangr.exe的路徑;監(jiān)控時(shí)間間隔(秒)即進(jìn)行網(wǎng)絡(luò)連通檢測(cè)的時(shí)間間隔,有10、30、60、120、300和600等可選,默認(rèn)為60;模擬鼠標(biāo)鍵盤(pán)方式可選擇大漠插件或按鍵精靈,兩者相互獨(dú)立;注冊(cè)按鈕提供大漠插件(dm.dll)的注冊(cè)功能,也可手動(dòng)注冊(cè);手動(dòng)測(cè)試按鈕用于測(cè)試系統(tǒng)能否正常工作。
MFC項(xiàng)目中使用大漠插件,需要先下載并注冊(cè)該插件。注冊(cè)成功后,在MFC項(xiàng)目中選擇“TypeLib中的MFC類(lèi)”,在“可用的類(lèi)型庫(kù)”中選中“Dm<1.0>”,完成添加后,MFC項(xiàng)目中會(huì)增加頭文件Cdmsoft.h。在源文件中包含該頭文件,便可使用大漠插件提供的函數(shù)(注:大漠插件部分高級(jí)功能需付費(fèi),文章未涉及)。按鍵精靈的使用比大漠插件簡(jiǎn)單,下載并安裝按鍵精靈后,按照按鍵精靈的語(yǔ)法規(guī)則,編寫(xiě)實(shí)現(xiàn)模擬鼠標(biāo)鍵盤(pán)動(dòng)作的腳本文件,腳本功能測(cè)試通過(guò)后,使用按鍵精靈提供的按鍵小精靈制作功能,將腳本轉(zhuǎn)化為可獨(dú)立執(zhí)行的按鍵小精靈,MFC項(xiàng)目通過(guò)調(diào)用按鍵小精靈實(shí)現(xiàn)模擬鼠標(biāo)鍵盤(pán)功能。
圖3給出了使用大漠插件和按鍵精靈模擬登錄安達(dá)通客戶(hù)端的基本流程。圖中擬合關(guān)系式為1.3節(jié)確定的關(guān)系式。使用大漠插件可實(shí)現(xiàn)屏幕橫向和縱向分辨率獲取、鼠標(biāo)移動(dòng)、鼠標(biāo)右鍵單擊、鍵盤(pán)輸入等功能,所使用的函數(shù)分別為GetScreenWidth()、GetScreenHeight()、MoveTo()、LeftClick()、KeyPress()。需要注意的是,在進(jìn)行鍵盤(pán)輸入時(shí),需要先判斷待輸入編輯框中是否保存了數(shù)據(jù),避免出現(xiàn)錯(cuò)誤。判斷的依據(jù)是檢測(cè)編輯框像素,使用的是CmpColor()函數(shù)。使用按鍵精靈實(shí)現(xiàn)上述功能時(shí),依據(jù)功能選用合適的函數(shù)并正確使用即可。
圖3 模擬登錄安達(dá)通客戶(hù)端的基本流程
VPN網(wǎng)絡(luò)在氣象臺(tái)站觀測(cè)資料傳輸中起著重要的線路備份作用,其基于USB Key認(rèn)證的客戶(hù)端登錄方式,雖然提高了安全性,但同時(shí)也給網(wǎng)絡(luò)的自動(dòng)切換帶來(lái)了難度。文章以安達(dá)通VPN為例,在MFC框架下,基于Ping命令首先實(shí)現(xiàn)了專(zhuān)線網(wǎng)絡(luò)故障監(jiān)控及專(zhuān)線網(wǎng)絡(luò)故障情況下安達(dá)通VPN客戶(hù)端的自動(dòng)啟動(dòng);其次,利用大漠插件和按鍵精靈等模擬鼠標(biāo)鍵盤(pán)工具,實(shí)現(xiàn)了安達(dá)通VPN客戶(hù)端登錄操作的自動(dòng)交互。在實(shí)際使用中,有以下3點(diǎn)需要注意:
1)安達(dá)通VPN客戶(hù)端或按鍵小精靈啟動(dòng)時(shí),可能會(huì)遭到殺毒軟件,如360安全衛(wèi)士、騰訊電腦管家等的攔截,因此,最好在殺毒軟件中將其添加為信任軟件;
2)在執(zhí)行模擬鼠標(biāo)鍵盤(pán)操作時(shí),電腦突然出現(xiàn)的彈窗可能會(huì)對(duì)系統(tǒng)執(zhí)行結(jié)果產(chǎn)生一定影響,因此,最好對(duì)彈窗進(jìn)行清理或攔截設(shè)置;
3)大漠插件和按鍵精靈均可獨(dú)立實(shí)現(xiàn)模擬鼠標(biāo)鍵盤(pán)操作,但按鍵精靈比大漠插件多一個(gè)環(huán)節(jié)(啟動(dòng)按鍵小精靈),且需要在因特網(wǎng)正常的情況下才能使用,因此,優(yōu)先考慮使用大漠插件。
文章通過(guò)一元線性擬合,實(shí)現(xiàn)了任意屏幕分辨率下模擬鼠標(biāo)鍵盤(pán)工具對(duì)V4.0.2.4版本的安達(dá)通VPN客戶(hù)端的準(zhǔn)確操作。但版本不同,其界面布局可能不一樣,能否使用此系統(tǒng)還需要進(jìn)一步驗(yàn)證。下一步工作中,文章將研究多個(gè)不同版本的安達(dá)通VPN客戶(hù)端的界面特征,將其相應(yīng)的模擬鼠標(biāo)鍵盤(pán)操作追加到系統(tǒng)中,并設(shè)置版本選項(xiàng),增強(qiáng)系統(tǒng)的通用性。