こんにちは、システムデザイナーの平田です。 画像はAIが考えた「PingをWi-Fi APに飛ばすPowerShell」です。PowerShell厳ついですね。パワー感じます。
閑話休題。昨今、5千円程度だったミニコンピューター Raspberry Pi が半導体不足のあおりを受け、入手困難であったり、価格が高騰していたりします。
高い・・・最近1万ちょっとでWindowsPC買えてしまう。特にCeleron N4100番台は以前のATOMベースのCeleronに比べて、大幅に実用的です。
それなら、死活監視+遠隔メンテナンス用ということで、TeamViewerなりをインストールしたPC*1を現地設置しておくのはアリなんですよね。VPN用に穴を開ける必要もありませんし。*2
特に以下のようなメッシュWi-Fiで構成されたネットワークは、設置後しばらくの間、通信品質の確認が肝要です。
という訳で、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圧縮に標準で対応しているので、特に追加で何かのインストール不要。
この続きはcodocで購入