VPN等で入れない先に納入したネットワーク機器を死活監視する (格安PC+PowerShell編)

Pingを飛ばすPowerShellのイメージ
こんにちは、システムデザイナーの平田です。 画像はAIが考えた「PingWi-Fi APに飛ばすPowerShell」です。PowerShell厳ついですね。パワー感じます。

閑話休題。昨今、5千円程度だったミニコンピュータRaspberry Pi半導体不足のあおりを受け、入手困難であったり、価格が高騰していたりします。

高い・・・

最近1万ちょっとでWindowsPC買えてしまう。特にCeleron N4100番台は以前のATOMベースのCeleronに比べて、大幅に実用的です。

それなら、死活監視+遠隔メンテナンス用ということで、TeamViewerなりをインストールしたPC*1を現地設置しておくのはアリなんですよね。VPN用に穴を開ける必要もありませんし。*2

特に以下のようなメッシュWi-Fiで構成されたネットワークは、設置後しばらくの間、通信品質の確認が肝要です。

blog.hapicom.jp

という訳で、PowerShellで以下のようなものを作っていきます。

有料部分では実際のコードがご覧いただけます(商用利用可)

ping死活監視

  • タスクスケジューラーで起動時に常駐的に実行
  • 指定した宛先に、5秒ごとに5回pingを飛ばす。これを1セットとする
  • 5セット到達しなければ、ログファイルに断検知を記録し、指定した宛先にメールを送信
  • 断検知後、5セット回復すれば、ログファイルに復帰検知を記録し、指定した宛先にメールを送信
  • ライブラリなどの依存なく、OSの標準機能のみで行いたい。最近メール送信も可能なPowerShellで作る

ExPingのログローテーション

  • ExPingは指定フォルダにpingのログを貯めることができます
  • pingの死活だけでなく、応答速度(ms)を一定期間記録することで、無線区間の品質の測定に
  • ファイル名は固定。"EX<西暦下2桁><月><日>.LOG" となります。(西暦処理の一手間あり)
  • 1日のログが数MB程度発生→bzip2圧縮で数百KBに。前日までのログはbzip2圧縮
  • 前月までのログは "YYYY-mm" という名のフォルダへ移動
  • 13ヶ月以上前のログは、フォルダごと消去
  • こちらもPowerShellはbzip2圧縮に標準で対応しているので、特に追加で何かのインストール不要。

*1:無料版などでなく有償版の簡易アクセスなどを使うなど、乗っ取りやボット化しない為のセキュリティ対策を講じましょう

*2:お客さま了承は得ましょう

この続きはcodocで購入