サーバ一覧に基づき、pingを行い応答結果をログに出力するバッチ

サーバ一覧に基づき、pingを行い応答結果をログに出力する。
バッチで簡易作成。
list.txt とchkping.batを同じディレクトリに保存して実行。
list.txt にはサーバ名とトラブル時記載内容を記録。
バッチ内のfor 文中だと、%errorlevel%判定がうまく動かないのでcallで切り出した。

list.txt

list.txt  ——–
#サーバ名,chkログトラブル時表示内容
server1,ラックA-1
192.168.1.10,ラックA-1下
100.1.1.1,ラックC-2
——————-

chkping.bat

REM -chkping.bat———————————————————–
REM 2007/08
REM list.txt のサーバへpingをうち、正否をログに出力する
REM list.txt フォーマット
REM       サーバ名,エラー時の記載内容(ラック位置など)
REM       #以降はコメントとして無視
REM chek.txt(ログファイル)フォーマット
REM       日,時間,ping先,リターンコード*1,正常/エラー*2
REM         *1.リターンコード:0なら正常
REM         *2.エラー時はlist.txtのエラー時の記載内容を記載
REM サンプル
REM      2007/08/21,18:01,192.168.1.10,0,正常 
REM      2007/08/21,18:01,100.1.1.1,1,エラー ラックC-2
REM
REM Windows 2003 で動作確認
REM ————————————————————
setlocal
set logf=check.txt

FOR /F “eol=# tokens=1,2,3* delims=, ” %%I in (list.txt) do (
 call :SUB %%I %%J
)
endlocal
exit /B

:SUB
REM 日時と時間を ldate , ltime 変数に取得
for /F “usebackq tokens=1,2,3,* delims=/: ” %%I in (`date/T`) do set ldate=%%I/%%J/%%K
for /F “usebackq tokens=1,2,3,* delims=/: ” %%I in (`time/T`) do set ltime=%%I:%%J

 ping -n 2 %1
 if %errorlevel% == 0 (
     echo %LDATE%,%LTIME%,%1,%errorlevel%,正常 >> %logf%
 ) ELSE (
     echo %LDATE%,%LTIME%,%1,%errorlevel%,エラー %2>> %logf%
 )
exit /B

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA