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