疎通確認用pingツール

新人君たちと本番環境の構築作業でデータセンターに入り。
構築したサーバから、既存の重要なサーバへの疎通確認を行うために、pingを何度も入力する予定とのこと。
作業時間の短縮や間違いの低減のために、この確認作業を纏めて行うツール(DOSバッチ)を作成した。
作業効率化のためにこのような自動化ができないかを考えてほしい、だとか、自動化を過信すると逆に大きなミス(ツールのバグで疎通確認できていなかった等)になる場合もあるので、作業効率と確実性のバランスをとることも大事と伝えた。

ツール概要

説明

  • 複数のサーバに対して纏めてping疎通確認する。
  • 入力となるテキストファイルに記載されたサーバに対してpingを実行する。各pingの実行結果をログファイルに出力する。
  • このツールを共有フォルダに配置し、各サーバからこの共有フォルダ(\\で始まるパス: UNC)を開いて、本ツールを実行する想定です。ログファイルの場所がバラバラにならないよう、実行結果のログは本ツールと同じ共有フォルダ上に出力する設計になっています。
  • pingの実行仕様は、実行回数: 1、タイムアウト: 1,000[ms]とする。

ダウンロード

下記からダウンロードできます。

GitHub

tools. Contribute to nextdoorwith/tools development by creat…

フォルダ構成

  • ping_all.bat: 本ツール本体
  • ping_cmd.bat: 本ツールで使用するバッチ
  • hosts.txt: 疎通確認対象となるサーバの一覧を定義するファイル
  • log: ログファイルを格納するフォルダ
    • ping_all_[HOSTNAME].log: ログファイル、[HOSTNAME]は実行時サーバ名

実行方法

エクスプローラでping_all.batをダブルクリックする。
または、コマンドプロンプトから実行する。

入力ファイル仕様

hosts.txtファイルに対象ホストを1行1つ定義する。

出力ファイル仕様

ping_all_[HOSTNAME].logに次のように確認結果を出力する。
成功の場合は”OK”、失敗の場合は”**NG**”と出力する。(“NG”だと、ぱっと見、”OK”と誤認する可能性があるので、”*”を付けて桁数を変えることで目立つようにした。)

ツールの実装内容

ツールのソースコードは次の通り。

hosts.txtの内容を1行づつ読み取っり、その内容を引数として、後述のping_cmd.batを実行する。
ファイル内容を1行づつ読み取るためにfor文を使った。空白を含むパス上のファイルも対象とできるよう”for /F %%f (“%DEST_HOST_FILE%”)”(30行目)と書いたが、空白で区切られた複数のトークンと認識されてしまった。これを回避するために、”for /F %%f in (‘type “%DEST_HOST_FILE%”‘)”とした。

引数で指定されたホストに対してpingを実行する。
実行時の出力に”(0% の損失)”が含まれている場合、成功と見なす。%は予約語なので%%とエスケープする必要がある。