- 18 comprehensive monitoring checks - 5 systemd timers (5min, 15min, hourly, daily, weekly) - Complete documentation - NTFY secure notification system - Fixed debianvm disk space (91% to 57%) - Fixed CloudReve integration - Date: 2026-01-07
45 lines
1.6 KiB
Bash
Executable File
45 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
||
# Monitor public IP and internet speed
|
||
set -euo pipefail
|
||
|
||
SEND_NTFY="/usr/local/bin/send-ntfy.sh"
|
||
CACHE_FILE="/var/cache/public_ip_pve"
|
||
|
||
# Check public IP
|
||
CURRENT_IP=$(timeout 10 curl -s https://ifconfig.me 2>/dev/null || echo "FAILED")
|
||
|
||
if [ "$CURRENT_IP" = "FAILED" ]; then
|
||
$SEND_NTFY warning "Internet Check Failed" "🟡 WARNING: Cannot detect public IP - internet connection issue?" "warning,globe_with_meridians"
|
||
exit 1
|
||
fi
|
||
|
||
# Check if IP changed
|
||
if [ -f "$CACHE_FILE" ]; then
|
||
OLD_IP=$(cat "$CACHE_FILE")
|
||
if [ "$CURRENT_IP" != "$OLD_IP" ]; then
|
||
$SEND_NTFY info "Public IP Changed" "ℹ️ INFO: Homelab public IP changed\nOld: $OLD_IP\nNew: $CURRENT_IP" "globe_with_meridians,info"
|
||
fi
|
||
fi
|
||
|
||
echo "$CURRENT_IP" > "$CACHE_FILE"
|
||
|
||
# Speed test (only if --speedtest flag passed)
|
||
if [ "${1:-}" = "--speedtest" ]; then
|
||
if command -v speedtest-cli &>/dev/null; then
|
||
SPEED_RESULT=$(speedtest-cli --simple 2>/dev/null || echo "FAILED")
|
||
|
||
if [ "$SPEED_RESULT" != "FAILED" ]; then
|
||
UPLOAD=$(echo "$SPEED_RESULT" | grep "Upload:" | awk '{print $2}')
|
||
UPLOAD_INT=${UPLOAD%.*}
|
||
|
||
if [ "$UPLOAD_INT" -lt 10 ]; then
|
||
$SEND_NTFY warning "Slow Internet Speed" "🟡 WARNING: Upload speed only $UPLOAD Mbit/s (< 10 Mbit/s)" "snail,warning,globe_with_meridians"
|
||
else
|
||
$SEND_NTFY info "Speed Test Result" "ℹ️ INFO: Internet speed test\n$SPEED_RESULT" "globe_with_meridians,zap"
|
||
fi
|
||
fi
|
||
fi
|
||
fi
|
||
|
||
logger -t network-monitor "Public IP: $CURRENT_IP"
|