3
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

pingツールを作った

Last updated at Posted at 2018-01-11

はじめに

ping監視ツール的なものを漁っていたらdeadmanというツールを見つけた。
ちょっと古かったので参考にしてpython3で自分でも作ってみた。

demo.gif

本家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を無理やり調整

  • ドキュメントによるとcureses.window.getmaxyx()で画面サイズが取得できるっぽい v0.1.3でこの調整機能は削除しました。
  • 取得したホスト名の長さの最大値を保存して再利用

今後

configファイル読み込み対応
2018/1/12 v0.1.4にて対応しました。

リポジトリ

johejo/ppping: Petty Plain Ping

3
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?