Posted on 

シェルから簡単にLINE通知しよう!

LINE-Notifyを使えばコマンドラインから簡単にメッセージを送信できることがわかったので共有します。

やること

1. LINE Notify を友達追加する

LINE Notify にアクセスします。 QRコードがあるので、そこからLINE Notifyを友達登録しておきましょう。

2. LINE Notify のアクセストークンを取得する

マイページ のページ下部にある、トークンを発行する ボタンからトークンを発行します。

通知を送りたいグループを選択します。(テストだったら1:1でLINE Notifyから通知を受け取るにしておくのが無難)

次の画面で出てくる文字列をコピーして、どこかに保存しておきます。

悪用の恐れがあるのでトークンは誰にも見せないように!!

3. curlコマンドで通知を送信

下のコマンドをターミナルで実行します。

ターミナル
1
2
3
4
curl -X POST \
-H 'Authorization: Bearer [先ほどのトークン]' \
-F 'message=[送信したいメッセージ]' \
https://notify-api.line.me/api/notify

うまく行くと、シェルに↓のように出力されて、

出力
1
{"status":200,"message":"ok"}

↓こんな感じの通知が来るはずです。

通知の様子
通知の様子

クエリにurlを指定すると、画像も送れます。(サーバーにアップロードするとかもできるみたい。)

1
2
3
4
5
6
curl -X POST \
-H 'Authorization: Bearer [トークン]' \
-F 'message=画像のテスト' \
-F 'imageThumbnail=https://blog.powell1213.com/images/sudoku/sudoku.png' \
-F 'imageFullsize=https://blog.powell1213.com/images/sudoku/sudoku.png' \
https://notify-api.line.me/api/notify
画像を送信
画像を送信

4. シェルスクリプトの作成

このままでも十分なのですが、こんなスクリプトを書いてみました。

notify.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/zsh

local ACCESS_TOKEN='<トークン>'
local __url='https://notify-api.line.me/api/notify'

# パラメータの受け取り
if [[ "`echo $@`" == "" ]]; then
__str=`cat -` # パイプの受け取り
else
__str=$@ # 引数の受け取り
fi

# 処理
echo "${__str}"

# LINE Notifyで通知
curl -s -X POST \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-F "message=${__str}" \
$__url > /dev/null

これで、

1
./notify.sh ほげほげ〜
1
cat hoge.txt | ./notify.sh

というようなコマンドで通知を送信できます!

エイリアスの設定
~/.zshrc
1
alias notify='<notify.shのパス>'

などとエイリアスを設定しておくと便利かもしれませんね。

最後に

活用方法がいろいろあって面白そうですね。また何か作ってみようと思います。

参考

コマンドラインから LINE にメッセージを送れる LINE Notify - LINE Engineering LINE Notify API Document


このページはHexoStellarを使用して作成されました。