はじめに
ping監視ツール的なものを漁っていたらdeadmanというツールを見つけた。
ちょっと古かったので参考にしてpython3で自分でも作ってみた。
本家deadmanはマルチスレッドで実装してるみたいだったけれど、とりあえずシングルスレッドで実装
インストール
pypi経由でインストール
$ pip install ppping
github経由でインストール
$ pip install git+https://github.com/johejo/ppping.git
使い方
$ ppping hoge.com fuga.jp WW.XX.YY.ZZ
詳しいオプションは--help
UI
古より伝わりしcurses
ロジック
-
subprocessでpingコマンドを実行して、結果を
無理やり力技でパース - 整形して表示
工夫
pingコマンドの実行エラーへの対処
存在しないホスト等をpingで実行するとstderrにエラーが表示されてそれがcursesの画面に割り込んでくる
stderrにDEVNULLを指定してエラーを無視
out = subprocess.run(['ping', host, '-c1'], check=True, stdout=subprocess.PIPE,
stderr=subprocess.DEVNULL, timeout=self.timeout).stdout.decode()
見た目
合間にtime.sleep(INTERVAL)
をいれることでなんかかっこよさげに見える
ホストやIPアドレスの長さが変わってもUIを無理やり調整
-
ドキュメントによるとv0.1.3でこの調整機能は削除しました。cureses.window.getmaxyx()
で画面サイズが取得できるっぽい - 取得したホスト名の長さの最大値を保存して再利用
今後
configファイル読み込み対応
2018/1/12 v0.1.4にて対応しました。