Windows10、LinuxPCの開始、終了時にIFTTT→LINE Notify経由でメッセージを送る
テレワークでパソコンをリモートで接続する需要も高まっていると思います。その際、起動・終了のメッセージをスマホに送付できれば便利だなと思い実現できるか試してみました。IFTTT→LINE Notifyを経由すれば可能だったので手順を忘れないようにメモしておきます。
もくじIFTTTとLINE Notifyの連携
IFTTTとLINE Notifyの登録や連携については下記のブログが詳しいです。
Messageの欄を下記のように設定すると分かりやすいかもしれません。
用意する値
先ほどのブログを参照して以下の2つの値を用意します。
- イベント名
- Webhooksのキー文字列
簡単なバッチファイル(シェルスクリプト)の説明
Windows10でもLinuxでも同じで、バッチファイル(シェルスクリプト)を実行したときに引数1に「文字列」を渡し、IFTTTとLINE Notifyの連携で設定したValue1に「文字列」が表示されます。
Value2は日付と時間、Value3はコンピュータ名(ホスト名)が入ります。
Windows10はバッチファイルを作成し登録する。
Windows10ではバッチファイルを作成し、そのあとグループポリシー設定を変更してバッチファイルを登録します。
※ バッチファイルはC:\bat\send_message_to_linenotify.batという名前で説明します。
①バッチファイルの作成
下記のようにバッチファイルを作成します。2行目と3行目のYOUR_EVENTNAME_HEREとYOUR_KEY_HEREはIFTTTで確認した値に変更します。
set URL=https://maker.ifttt.com/trigger
set EVENTNAME=YOUR_EVENTNAME_HERE
set YOUR_KEY=YOUR_KEY_HERE
set VALUE2=%DATE%%TIME%
set VALUE3=%COMPUTERNAME%
set WEBHOOKSURL=%URL%/%EVENTNAME%/with/key/%YOUR_KEY%
curl -X POST --ssl-no-revoke -H "Content-Type: application/json" -d ^
"{\"value1\":\"%1\",\"value2\":\"%VALUE2%\",\"value3\":\"%VALUE3%\"}" ^
%WEBHOOKSURL%
exit
②グループポリシーエディタの起動
「Windows」+「R」を押して「gpedit.msc」を起動します。
③グループポリシーの変更
「コンピューターの構成」→「Windowsの設定」→「スクリプト(スタートアップ/シャットダウン)」を選択します。
④スタートアップとシャットダウンの設定を変更
作成したバッチファイルをスタートアップとシャットダウンに登録します。
スタートアップ
スタートアップをクリックし、プロパティを開いた後、追加を押します。「スクリプトの追加」ダイアログが開いたら作成したバッチファイル名とパラメーターに「Startup」を設定してください。
シャットダウン
スタートアップと同じようにスクリプトを追加します。パラメーターは「Shutdown」とします。
終了
設定が終わったらダイアログをOKで閉じます。PCをシャットダウン→起動してLINEに通知が来れば完了です。
Linuxの場合はシェルスクリプトを作成しsystemdに登録する。
Ubuntu18.04と20.04及びRaspberryPi OS(旧Raspbian)で動作確認しています。
①シェルスクリプトの作成
シェルスクリプトを作成します。ファイル名やフォルダは任意ですが、「~/bin/iftttline.sh」で作成したと仮定します。
4行目と5行目のYOUR_EVENTNAME_HEREとYOUR_KEY_HEREはIFTTTで確認した値に変更します。
#!/bin/bash
URL="https://maker.ifttt.com/trigger"
EVENTNAME="YOUR_EVENTNAME_HERE"
YOUR_KEY="YOUR_KEY_HERE"
VALUE2=${2:-`date '+%Y/%m/%d,%H:%M:%S'`}
VALUE3=${3:-`hostname`}
WEBHOOKSURL="${URL}/${EVENTNAME}/with/key/${YOUR_KEY}"
curl -X POST -H "Content-Type: application/json" -d \
'{"value1":"'$1'","value2":"'${VALUE2}'","value3":"'${VALUE3}'"}' \
${WEBHOOKSURL}
echo $1 $2 $3
exit 0
②権限の設定
作成したシェルスクリプトに実行権限を与えます。
chmod 755 ~/bin/iftttline.sh
③Unitファイルの作成
systemd用のUnitファイルをsudoで作成します。作成するファイルは「/lib/systemd/system/ifttt.service」です。
※ USER_NAMEのところは自分のユーザー名に変更してください。
[Unit]
Description=Send IFTTT to LINE Message
After=network-online.target
[Service]
ExecStart=/home/USER_NAME/bin/iftttline.sh "SystemStart"
ExecStop=/home/USER_NAME/bin/iftttline.sh "Shutdown"
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
④サービスの登録
下記のようにコマンドを実行してサービスを登録します。サービスをスタートさせるとLINEにSystemStartのメッセージが来るはずです。
sudo systemctl enable ifttt.service
sudo systemctl start ifttt.service
動作の様子
LINEへ通知がくると下記のように表示されます。
Windows10のその他のイベントで出したい時
この方法は自分で試した結果なので他の対処方法もあると思います。設定が難しい項目もあるので参考程度にしてください。
休止状態(サスペンド)への移行時
色々試したのですが、休止状態へ入るときはイベントビューワーのログをトリガーにしてタスクの設定しても通知は復帰後に届くというものでした。したがって、休止状態に入るときに下記のバッチファイルを実行してコマンドで休止状態(サスペンド)に入るようにするとLINEに通知を送った後に休止状態に入ります。
休止状態
call c:\bat\send_messege_to_linenotify.bat hibernate_in
powercfg /hibernate on
rundll32.exe PowrProf.dll,SetSuspendState
サスペンド
call c:\bat\send_messege_to_linenotify.bat suspend_in
powercfg /hibernate off
rundll32.exe PowrProf.dll,SetSuspendState
休止状態からの復帰【難しい】
こちらはイベントビューワーの使い方や項目の内容を理解していないと設定は難しいかもしれません。
●簡単な流れ
- 休止またはサスペンドから復帰する。
- イベントビューワーを起動して、システムログから復帰後に使えそうなイベントを探し出す。(私の場合はLANモジュールの開始イベントを選びました。)
- イベントの「ソース、イベントID」をメモする。
- 「コンピュータの管理」→「システムツール」→「タスクスケジューラー」を起動
- 「タスクの作成」
- トリガーは「イベント時」を選び、3でメモしたソースとイベントIDを書き込む
- 操作は「プログラムの開始」を選び、プログラム/スクリプトに「C:\bat\send_message_to_linenotify.bat」、引数の追加に「hibernate_out」を入力して、タスクを追加する。
このように設定すると、イベントビューワーに指定したソース、イベントIDが記録されるたびにLINEに通知が来るようになります。
おわりに
テレワーク等で家に置いてあるパソコンの起動・終了を監視したい場合に便利なので活用してみてください。