45 lines
1.3 KiB
Bash
Executable File
45 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# Polls the OpenClaw gateway health endpoint.
|
|
# Sends a Telegram notification whenever it recovers after being unreachable.
|
|
|
|
BOT_TOKEN="8598508497:AAHmTMbnR7un2ADtmsjJr8moQkDOU9ILBps"
|
|
CHAT_ID="1793951355"
|
|
GATEWAY_URL="http://127.0.0.1:18789"
|
|
POLL_INTERVAL=3 # seconds between checks
|
|
LOG_PREFIX="[$(date '+%Y-%m-%d %H:%M:%S')]"
|
|
|
|
send_notification() {
|
|
curl -s -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{
|
|
\"chat_id\": \"${CHAT_ID}\",
|
|
\"text\": \"✅ *Krilly is back online!*\n\nOpenClaw gateway restarted and is ready to go 🦀\",
|
|
\"parse_mode\": \"Markdown\"
|
|
}" > /dev/null
|
|
}
|
|
|
|
is_up() {
|
|
STATUS=$(curl -s -o /dev/null -w "%{http_code}" --max-time 3 "${GATEWAY_URL}/health" 2>/dev/null)
|
|
[ "$STATUS" = "200" ] || [ "$STATUS" = "401" ]
|
|
}
|
|
|
|
echo "$(date '+%Y-%m-%d %H:%M:%S') Gateway watcher started"
|
|
|
|
WAS_UP=true
|
|
|
|
while true; do
|
|
if is_up; then
|
|
if [ "$WAS_UP" = "false" ]; then
|
|
echo "$(date '+%Y-%m-%d %H:%M:%S') Gateway recovered — sending notification"
|
|
send_notification
|
|
fi
|
|
WAS_UP=true
|
|
else
|
|
if [ "$WAS_UP" = "true" ]; then
|
|
echo "$(date '+%Y-%m-%d %H:%M:%S') Gateway went down"
|
|
fi
|
|
WAS_UP=false
|
|
fi
|
|
sleep "$POLL_INTERVAL"
|
|
done
|