コマンド実行完了時にSlackに通知を飛ばす
状況
Linuxマシンで時間のかかるコマンドを頻繁に実行している。
e.g.) 機械学習、総当たり系CTFソルバ、など
実行が完了したかどうか毎回見にいくのは面倒なので、実行終了時にSlackなどに通知を飛ばすことで効率を良くしたい。
方法
ntfy というツールを入れて通知を飛ばすことにしました。
簡単に言ってしまえば、Slackを始めとする様々なツールのAPIラッパーのようなものです。
自分で書いてもいいのですが、今回は手軽に通知を飛ばすことだけを考えていたのでこれで済ませます。
手順
ntfyインストール
pipで簡単に入ります。
$pip install ntfy
$pip install ntfy[slack]
slackを用いる場合は下のコマンドを用いるらしいです。
slack側の準備
レガシートークンというものを用います。
発行したらこれだけでslack側の準備は終了です。
ntfy設定ファイルの準備
~/.ntfy.yml というファイルに以下のように記述します。
backends: - slack slack: - token:xoxp-hogehoge - recipient:"#<送りたいチャンネル名>"
これで準備完了です。
通知送信
コマンドから
$ntfy send "hoge"
pythonから
from ntfy.backends import slack slack.notify(title="piyo",message="huga",token="token",recipient="#ntfy-test")
これだけ。
結果
bot名やアイコンなどはntfyをいじればカスタマイズできるはず。
ただ要件は満たしたので今はこれで満足してます。
ふと思ったんだけど、頑張ればこの記事をどっかのAdventCalendar用にできたのでは。