以前自己寫的一個監控指令碼,每隔10秒使用PING命令檢查一個IP列表中的IP,如果不通,則通過messenger訊息發送,並使用BEEP發出警示聲。需要檔案sleep.exe(可到網上下一個)、BEEP.EXE(自己用DELPHI寫的,不必需,代碼可去掉,也可以去網上找一個),再建立檔案ip.txt,user.txt,運行指令碼即可。
rem main.bat
@echo off
for /F "eol=; tokens=1,2* delims==" %%i in (ip.TXT) do call :checkip %%i %%j 0
echo --------------------------------------------------------------
echo ----第一輪檢查完畢,如果沒有聽到警示聲,表示各IP都可以PING通----
echo ----如果有異常的IP,請再手動使用PING命令,以確認檢查的正確性----
echo ---- 現在進行迴圈檢查,每隔10000ms檢查一個IP ----
echo --------------------------------------------------------------
:begin
for /F "eol=; tokens=1,2* delims==" %%i in (ip.TXT) do call :checkip %%i %%j 10000
goto begin
:checkip
@echo off
PING %1 -n 1 | FIND "TTL=" >NUL
IF NOT ERRORLEVEL 1 ECHO %1(%2) Status OK at %TIME%
IF NOT ERRORLEVEL 1 GOTO NEXT
PING %1 -n 1 -w 3000 | FIND "TTL=" >NUL
if %ERRORLEVEL%==1 call :send %1 %2 ELSE ECHO %1(%2) Status OK at %TIME%
:Next
sleep %3
goto end
:send
@echo off
ECHO %1(%2):::::Status ERROR at %TIME%:::::
for /F "eol=;" %%i in (user.TXT) do net send %%i "Error Pinging %1(%2)." >NUL
Beep 1500 500
Beep 500 500
Beep 1500 500
Beep 500 500
goto end
:end
;ip.txt,關鍵IP,一行一個IP,等號後面可輸入名稱
192.168.0.1=集團網關
192.168.0.123=test
;user.txt,電腦名稱或IP,檢測到網路不通時,發送訊息給文中的使用者
computername