在ubuntu使用systemd建立開機telegram訊息通知

1 首先,我們先在 /usr/local/bin 建立腳本 check_network.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
TELEGRAM_BOT_TOKEN="TELEGRAM_BOT_TOKEN"
TELEGRAM_CHAT_ID="TELEGRAM_CHAT_ID"

# eno1 改用你電腦對外網卡
IP_ADDRESS=$(ip addr show eno1 | grep -oP '(?<=inet\s)\d+\.\d+\.\d+\.\d+')

EXTERNAL_CONNECTION=$(ping -c 1 google.com 2>&1 | grep "1 packets transmitted")

if [ -n "$EXTERNAL_CONNECTION" ]; then
MESSAGE="Ubuntu 係統已啓動。IP 地址:$IP_ADDRESS"
URL="https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage"
curl -s -X POST $URL -d "chat_id=$TELEGRAM_CHAT_ID&text=$MESSAGE"
fi

exit 0

2 設定腳本可執行

1
sudo chmod +x /usr/local/bin/check_netowrk.sh

3 使用systemd建立開機服務的設定

1
vim /etc/systemd/system/check-network.service

4 開機服務設定內容如下:

1
2
3
4
5
6
7
8
9
[Unit]
Description=Check External Network Connection and Send Notification
After=network-online.target

[Service]
ExecStart=/usr/local/bin/check_netowrk.sh

[Install]
WantedBy=multi-user.target

5 啟用並啟動服務

1
2
sudo systemctl enable check-network.service
sudo systemctl start check-network.service

6 確認服務狀態

1
sudo systemctl status check-network.service

如何服務運作正常,可以手動執行腳本測試,確認訊息有正常發送之後,在重新開機,如果網路服務有正常連線,應該會收開機後收到訊息。