当ページのリンクには広告が含まれています。

【Windows11】CSVファイルからIPアドレスを読み込んで順にpingを打ち、結果を〇×でCSVファイルにエクスポートするバッチ

技術

みなさん、死活監視してますか?

インフラエンジニアとして働いている皆さん、死活監視ツールは何を使っていますか?
Zabbixですか?Nagiosですか?
監視ツールは様々ありますよね。

でもそういったミドルウェアを使用せずサクッとホストの有無を確かめたいことありませんか?

社内ネットワークで使われていないIPを確認したり、業務確認で大量のping確認があって人力じゃ無理な場合だったり、インフラエンジニアであれば一度はそういう経験をされたことがあるのではないでしょうか?

そんな時に使えるバッチファイルを作成しましたので、ぜひ参考にしてみてください!

ダブルクリックして待つだけ!バッチファイルを置くフォルダに指定はありません!結構便利ですよ!
…こらそこ!!!ExPingで良くね?とか言わない!!!!!

※バッチファイルに関する詳細な説明はしていません。
※本バッチファイルを使用して起きたトラブルについて、筆者は一切の責任は持ちませんので予めご了承ください。

動作環境

OS : Windows11
バージョン : 24H2

※Windows10でも動作確認済みですが、サポート終了間近なのでWindows11で使用推奨です。

使用準備

用意するものはメインバッチCSVファイルの二つだけです。

●メインバッチについて

ファイル名 → なんでも良いです。本記事では「all-ping.bat」にしています。
ファイルの中身 → 後述のメインバッチのコードを全コピーして貼り付けで大丈夫です。文字化けを防ぐためにも文字コードはANSIで設定しておくことをお勧めします。

●CSVファイルについて

ファイル名 「all-ping.csv」にしてください。batファイルの中に定義しているので固定ファイル名です。batファイルをいじれる方は適宜変更してください。
ファイルの中身 → こちらも後述しますが、ホスト名とIPアドレスの二つの情報を記述することが出来ます。

動作結果サンプル

進行状況が表示され、完了したら結果が「all-ping_result.csv」に出力されます。

メインバッチ

@echo off

rem ------------------------------------------------------------------
rem 遅延環境変数使用
rem ------------------------------------------------------------------
setlocal enabledelayedexpansion

rem ------------------------------------------------------------------
rem 管理者権限で実行
rem ------------------------------------------------------------------
whoami /priv | find "SeDebugPrivilege" > nul
if %errorlevel% neq 0 (
    @powershell start-process %~0 -verb runas
    exit
)

rem ------------------------------------------------------------------
rem カレントディレクトリ移動
rem ------------------------------------------------------------------
cd /d %~dp0

rem ------------------------------------------------------------------
rem CSVファイル指定
rem ------------------------------------------------------------------
set csvFile=all-ping.csv

rem ------------------------------------------------------------------
rem CSVファイルの確認
rem ------------------------------------------------------------------
if not exist %csvFile% (
    echo --------------------------------------------------------------
    echo CSVファイルがありません。処理を終了します
    echo --------------------------------------------------------------
    pause
    exit
)

rem ------------------------------------------------------------------
rem pingオプション設定
rem    INTERVAL:ping実行間隔[s]
rem    PINGCOUNT:ping回数[回]
rem    PINGTIMEOUT:pingタイムアウト[ms]
rem ------------------------------------------------------------------
set INTERVAL=60
set PINGCOUNT=1
set PINGTIMEOUT=1000

rem ------------------------------------------------------------------
REM 出力ファイルを初期化(ヘッダー行を追加)
rem ------------------------------------------------------------------
echo hostname,IP_Address,result > all-ping_result.csv

rem ------------------------------------------------------------------
rem 処理1:CSVファイルを1行ずつ読み込む
rem 処理2:読み込んだ対象ホストにpingを打つ
rem 処理3:結果を別CSVファイルに出力する
rem ------------------------------------------------------------------
set count=0

for /f "skip=1 tokens=1,2 delims=," %%A in (all-ping.csv) do (
    set "hostname=%%A"
    set "IP_address=%%B"
    set /a count+=1

    echo === !count! 件目の処理中 ===
    echo !hostname! へpingを実行中です

    ping -n %PINGCOUNT% -w %PINGTIMEOUT% !IP_address! > nul 2>&1
    set "ret=!errorlevel!"

    rem ------------------------------------------------------------------
    rem 結果判定
    rem ------------------------------------------------------------------
    if "!ret!"=="0" (
        set "result=〇"
    ) else (
        set "result=×"
    )

    echo !hostname!,!IP_address!,!result! >> D:\all-ping_result.csv
    echo !hostname! へpingの実行が完了しました
    echo === !count! 件目の処理完了 ===
    echo.
    echo.

    timeout /nobreak /t 1 > nul
)

rem ------------------------------------------------------------------
rem 終了処理
rem ------------------------------------------------------------------
echo ------------------------------------------------------------------
echo 全件pingは正常終了し、結果はall-ping_result.csvに出力されました
echo ------------------------------------------------------------------
endlocal
pause

CSVファイル

二列しかない超シンプル構成。

実行結果

実行後は以下のような内容のCSVファイル(ファイル名:all-ping_result.csv)が新たに生成されます。
バッチファイルと同階層に出力され、既にファイルが存在する場合は上書きされますので注意してください。

タイトルとURLをコピーしました