サーバ一覧に基づき、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.txtFOR /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:%%Jping -n 2 %1
if %errorlevel% == 0 (
echo %LDATE%,%LTIME%,%1,%errorlevel%,正常 >> %logf%
) ELSE (
echo %LDATE%,%LTIME%,%1,%errorlevel%,エラー %2>> %logf%
)
exit /B