new file: .env.example
new file: .gitignore new file: README.md new file: install.sh new file: ping-vps.service new file: ping-vps.sh new file: ping-vps.timer
This commit is contained in:
commit
878600ca30
7 changed files with 80 additions and 0 deletions
37
ping-vps.sh
Executable file
37
ping-vps.sh
Executable file
|
|
@ -0,0 +1,37 @@
|
|||
#!/bin/bash
|
||||
# /usr/local/bin/ping_monitor.sh
|
||||
source "$(dirname "$0")/.env"
|
||||
send_matrix() {
|
||||
curl -s -X PUT \
|
||||
"${MATRIX_SERVER}/_matrix/client/v3/rooms/${MATRIX_ROOM}/send/m.room.message/$(date +%s%N)" \
|
||||
-H "Authorization: Bearer ${MATRIX_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"msgtype\":\"m.text\",\"body\":\"$1\"}"
|
||||
}
|
||||
send_telegram() {
|
||||
curl -s -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
|
||||
-d chat_id="${CHAT_ID}" \
|
||||
-d text="$1"
|
||||
}
|
||||
|
||||
# Инициализация state
|
||||
[ ! -f "$STATE_FILE" ] && echo "up" >"$STATE_FILE"
|
||||
PREV_STATE=$(cat "$STATE_FILE")
|
||||
|
||||
if ping -c 3 -W 5 "$TARGET_IP" >/dev/null 2>&1; then
|
||||
CURRENT_STATE="up"
|
||||
# Уведомить о восстановлении, если был down
|
||||
if [ "$PREV_STATE" = "down" ]; then
|
||||
send_matrix "✅ Сервер восстановлен: ${TARGET_IP} снова доступен"
|
||||
send_telegram "✅ Сервер восстановлен: ${TARGET_IP} снова доступен"
|
||||
fi
|
||||
else
|
||||
CURRENT_STATE="down"
|
||||
# Уведомить только если статус изменился (не спамить)
|
||||
if [ "$PREV_STATE" = "up" ]; then
|
||||
send_matrix "🔴 Сервер недоступен: ${TARGET_IP} не отвечает на ping"
|
||||
send_telegram "🔴 Сервер недоступен: ${TARGET_IP} не отвечает на ping"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "$CURRENT_STATE" >"$STATE_FILE"
|
||||
Loading…
Add table
Add a link
Reference in a new issue