概要
卒論用に作ったのですが、便利だったのでパッケージ化してpip
でインストールできるようにしました。
コマンドが
- 正常に終了した
- エラーを発生した
- 指定時間を超えて出力がない
- 指定した正規表現とマッチした
場合にSlackの通知を送信します。
使用例
走らせたいコマンドの前にlookout
と書くだけです。
シンプルな使い方
$ lookout python kusodeka_program.py arg1 arg2
正規表現でも通知を設定できます。下はcondaでパッケージをインストールする際の([y]/n)?
にマッチして通知を送る例です。
condaのインストール待ち
$ lookout --regex "\(\[y\]\/n\)\?" conda install opencv
また、Slackのインストールも不要です。例えばサーバで大きなプログラムを動かしている場合、
バックグラウンドで走らせる例
$ nohup lookout python train.py
とすればバックグラウンド実行でコマンドが終わった時やエラー発生時に通知が送信されます。
インストール
インストール
$ pip install lookout-python
でインストールします。Slackのインストールは不要です。初回起動時にブラウザでSlackの認証を求められます。画面に従うと認証用コードが表示されるので、それをコピペして下さい。
オプション
タイムアウト通知の制限時間を設定
--hangthreshold 秒数
「プロセスが止まってるかもしれません」という通知を送るまでの時間の設定です。設定は保存され次回以降も適用されます。
正規表現を設定
--regex "正規表現"
正規表現を設定すると出力がマッチした場合に通知を送ります。記号は\
でエスケープするのを忘れないようにしてください。正規表現がshと干渉しない場合はダブルクオートは不要です。
複数個設定したい場合は正規表現の|
を使って下さい。
チャンネルを変更
$ lookout --change
スラックの認証をやり直します。
リセット
$ lookout --reset
初期化します。
制限
- 出力の色が再現されないことがあります。出力の処理のためにpipeを通しているのですが、プログラムによっては出力先が実際のターミナルではない場合にANSIエスケープシーケンスを出力してくれないことが理由です。
- 正規表現の通知は改行を待たないため、通知に表示される最終行はマッチした正規表現以降が欠けています。これは、入力を求めるプロンプトなどが改行を含まない場合にも対応するためです。