郭寶仁,林慧卿,劉俊芳 ,郭 宇
(1.山西省地震局定襄地震臺(tái),山西 定襄 035400;2.福建省地震局永安地震臺(tái),福建 永安 366000;3.太原大陸裂谷動(dòng)力學(xué)國(guó)家野外科學(xué)觀測(cè)研究站,山西 太原 030025)
前兆儀器的正常運(yùn)行是保證觀測(cè)數(shù)據(jù)連續(xù)與完整的重要前提。當(dāng)網(wǎng)絡(luò)中斷時(shí),前兆儀器可能死機(jī)或故障,如不及時(shí)處理,就可能導(dǎo)致儀器缺記。所以,定時(shí)監(jiān)控前兆儀器網(wǎng)絡(luò)狀態(tài)非常重要。傳統(tǒng)方式采用ping命令手工檢查網(wǎng)絡(luò)狀態(tài),效率較低。檢測(cè)時(shí),需要手動(dòng)輸入所有儀器IP地址,并且無(wú)法告警[1]。文章通過(guò)編輯批處理文件來(lái)監(jiān)控前兆儀器網(wǎng)絡(luò)狀態(tài),并結(jié)合Windows計(jì)劃任務(wù),實(shí)現(xiàn)定時(shí)下載當(dāng)天數(shù)據(jù)文件。
批處理是一種簡(jiǎn)化的腳本語(yǔ)言,也稱作宏。它應(yīng)用于DOS和Windows系統(tǒng)中,是由DOS或者Windows系統(tǒng)的內(nèi)嵌命令解釋器解釋運(yùn)行。批處理文件具有.bat或者.cmd的擴(kuò)展名,可以用記事本直接編輯或用DOS命令創(chuàng)建,也可以用DOS下的文本編輯器來(lái)編輯[2]。批處理的作用就是能夠自動(dòng)連續(xù)地執(zhí)行多條命令,一個(gè)批處理文件就是多條批處理命令的合集。一個(gè)最簡(jiǎn)單的程序,執(zhí)行一次批處理就可以將所包含的所有命令從頭到尾執(zhí)行一遍,提高了工作效率。簡(jiǎn)單的批處理文件使用記事本就可以編輯,方便、靈活、功能強(qiáng)大、自動(dòng)化程度高、占用電腦資源少。
當(dāng)網(wǎng)絡(luò)中斷時(shí),可造成儀器死機(jī)或者網(wǎng)絡(luò)故障,若不及時(shí)發(fā)現(xiàn),會(huì)造成觀測(cè)數(shù)據(jù)缺失。利用批處理程序?qū)崿F(xiàn)儀器網(wǎng)絡(luò)監(jiān)控,程序簡(jiǎn)單,對(duì)系統(tǒng)環(huán)境要求低,利用Windows自帶的記事本軟件就可編輯,編寫完成保存為.bat文件,雙擊即可運(yùn)行。
文件把需要監(jiān)測(cè)的儀器IP地址、ftp的用戶名、密碼和儀器內(nèi)數(shù)據(jù)存放路徑分別逐行寫在文件名為IP.txt、name.txt、password.txt、path.txt的文本文檔內(nèi),程序通過(guò)ping命令逐行檢查、判斷IP地址的連接情況,使用ftp命令下載當(dāng)日數(shù)據(jù)。批處理程序?qū)崿F(xiàn)儀器監(jiān)控流程和主要代碼如圖1所示。
圖1 程序流程圖Fig.1 Program flow chart
程序主要代碼:
(1) 網(wǎng)絡(luò)連接監(jiān)測(cè)部分。
@echo off&setlocal enabledelayedexpansion
:start
set /a nd+=1
set /a time = %TIME:~0,2%%TIME:~3,2%
set /a date = %DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
FOR /F "delims=" %%i in (IP.txt) do (
set /a ndd+=1
ping %%i -n 1 >nul&&(echo %%i 正常&&(if %ndd%==%nd%6000 goto:download))||echo %%i 中斷&&echo %%i>不通的 IP.txt&&call:warn)
goto:start
(2) 報(bào)警部分。
:warn
mshta vbscript:createobject("sapi.spvoice").speak("注意有儀器失去連接")(window.close)
FOR /F "delims=" %%i in (不通的IP.txt) do (
ping %%i -n 1 >nul&&(goto:start&&del 不通的IP.txt)||echo %%i 中斷&&goto:warn)
(3) 數(shù)據(jù)下載部分。
:download
set /a j+=1
for /f "delims=" %%ip in (IP.txt) do (
set /a ni+=1
if !ni!==%j% (
echo open %%ip>ftp.txt
for /f "delims=" %%n in (name.txt) do (
set /a nn+=1
if !nn!==%j% (
echo %%n>>ftp.txt
for /f "delims=" %%p in (password.txt) do (
set /a np+=1
if !np!==%j% (
echo %%p>>ftp.txt
echo cd path>>ftp.txt
echo lcd C:UsersdxtDesktop>>ftp.txt
echo get *%date%.epd %ip%%date%%time%.txt>>ftp.txt
echo bye>>ftp.txt
ftp -s:ftp.txt
del ftp.txt
))))))
set /a ni=0
set /a nn=0
set /a np=0
if %j% equ 6 (set/a j=0)
goto:start
若在計(jì)算機(jī)系統(tǒng)工具任務(wù)計(jì)劃程序內(nèi),新建計(jì)劃任務(wù)時(shí),觸發(fā)器選擇在每日固定時(shí)間,操作選擇執(zhí)行該批處理文件,則在以后每天所選擇的固定時(shí)間點(diǎn),該批處理命令將自動(dòng)執(zhí)行,不再需要任何人為操作,完全實(shí)現(xiàn)自動(dòng)化。
該程序編輯修改方便,操作簡(jiǎn)單,對(duì)計(jì)算機(jī)性能要求較低。后臺(tái)運(yùn)行時(shí),完全不影響計(jì)算機(jī)的正常工作,若結(jié)合計(jì)算機(jī)內(nèi)的計(jì)劃任務(wù),此程序則可完全實(shí)現(xiàn)自動(dòng)化。該批處理程序可以定時(shí)監(jiān)控前兆儀器網(wǎng)絡(luò)狀態(tài)、網(wǎng)絡(luò)的連接狀態(tài),定時(shí)下載前兆儀器當(dāng)天數(shù)據(jù)文件,實(shí)現(xiàn)當(dāng)天數(shù)據(jù)的定時(shí)備份。監(jiān)控到前兆儀器網(wǎng)絡(luò)中斷時(shí),自動(dòng)發(fā)出語(yǔ)音告警,滿足前兆儀器網(wǎng)絡(luò)狀態(tài)實(shí)時(shí)監(jiān)控的需求。該程序的運(yùn)用可提高前兆儀器運(yùn)維工作效率,減少儀器缺記,進(jìn)而提高觀測(cè)數(shù)據(jù)連續(xù)率和觀測(cè)資料的質(zhì)量。