概要
- PCの前で,重たい処理が終わるのをじっと待つのは時間の無駄です
- 重たい処理が終わると,自動で LINE に通知を送る方法を紹介します
- 処理完了!のLINE通知が届くまでは,PCなんて放置して時間を有効活用しましょう
手順
LINE公式が提供している通知連携用のAPI(LINE Notify)を使います
APIといっても費用は不要,無料ですぐに使えます
初期登録
1) Lineのグループを作成する
API(LINE Notify)は,グループ宛に通知を送信する仕組みです
そのため,通知を受信するグループをあらかじめ作成する必要があります
自分ひとりしか通知を受け取らない場合でも,グループが必要です.
スマホなどでLineのアプリを起動して,アプリ上でLine のグループを作成します.
名前はなんでもOKです.
4) グループに LINE notifyを招待
Lineのアプリ上で, 1)で作成したグループに LINE notify を招待します
以上で初期登録はおしまいです
スクリプトの作成
通知送信用のスクリプトを作成します
ワンライナーでも記述できるのですが,便利なのでファイル化します
以下の内容を linenotify.sh というファイル名で保存しておきます
#!/bin/sh MSG="$@" TOKEN="上記の3)で作成したアクセストークンの文字列" wget -q \ --header="Authorization: Bearer ${TOKEN}" \ --post-data="message=${MSG}" \ https://notify-api.line.me/api/notify
仕組みとしては単純で,HTTPS経由で,POSTメソッドでメッセージを送信しているだけです.
動作確認
パスが通ったディレクトリに上記の linenotify.sh のスクリプトファイルを配置して,linenotify.sh を実行します
たとえば "Hello"という文字列をLineで送りたい場合は以下のコマンドを実行します
$ linenotify.sh Hello
現在時刻を通知したい場合は
$ linenotify.sh `date`
を実行します
これは,現在時刻を出力する dateコマンドを実行して,その実行結果の文字列(つまり現在時刻)を line に通知する動作になります
使い方(簡単な例)
たとえば重たい処理が command1 とすると
$ command1 ; linenotify.sh "command1 done"
と実行すれば,終了後すぐに "command1 done"という文字列がLineに通知されます
使い方(少し高度な例)
comannd1が失敗した場合だけLINEで通知
$ command1 || linenotify.sh "command1 failed!"
comannd1が成功した場合だけLINEで通知
$ command1 && linenotify.sh "command1 succeed!"
応用例
Lineに簡単に通知が送信できるので,いろいろな使い方ができます
一時間に一回,ログファイルを監視,行数を報告させる
ログファイルを/var/log/logfile とすると,wc -l で行数を数えるだけなので
while /bin/true; do linenotify.sh $(wc -l /var/log/logifle); sleep 3600; done
一時間に一回,ログファイルを監視,特定のメッセージの有無を報告させる
ログファイルを/var/log/logfile とすると,grepで特定のメッセージを検索するだけなので
while /bin/true; do linenotify.sh $(grep keyword /var/log/logifle); sleep 3600; done
まとめ
このエントリは以下の記事に触発されて作成しました
https://zenn.dev/magicmoment/articles/play-sound-command-20241205
エンジニア・プログラマをやっていると,
など,長い処理・重たい処理は沢山登場します
古典的な方法としては
$ make ; beep
や
$ make ; eject
です
でもパソコンの前でじっと処理が終わるのを待つのは,時間の無駄でしかありません.時間がもったいない.
そこで今回は,時間を有効活用するための手段として,LINE通知を使う方法を紹介しました.この方法を使えば,PCを放置して休憩や食事,打ち合わせに出かけるといった新しい選択肢が生まれます.