きゅうり。

主にCTF関係のことを書いていく気がします

コマンド実行完了時にSlackに通知を飛ばす

状況

Linuxマシンで時間のかかるコマンドを頻繁に実行している。

e.g.) 機械学習、総当たり系CTFソルバ、など

実行が完了したかどうか毎回見にいくのは面倒なので、実行終了時にSlackなどに通知を飛ばすことで効率を良くしたい。

 

方法

ntfy というツールを入れて通知を飛ばすことにしました。

簡単に言ってしまえば、Slackを始めとする様々なツールのAPIラッパーのようなものです。

自分で書いてもいいのですが、今回は手軽に通知を飛ばすことだけを考えていたのでこれで済ませます。

 

手順

ntfyインストール

pipで簡単に入ります。

$pip install ntfy
$pip install ntfy[slack]

slackを用いる場合は下のコマンドを用いるらしいです。

slack側の準備

レガシートークンというものを用います。

api.slack.com

発行したらこれだけで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")

これだけ。

結果

f:id:Kyuri:20171130220342j:plain

 

bot名やアイコンなどはntfyをいじればカスタマイズできるはず。

ただ要件は満たしたので今はこれで満足してます。

 

 

 

 

ふと思ったんだけど、頑張ればこの記事をどっかのAdventCalendar用にできたのでは。