#!/bin/bash # Transmission Health Check Script # Monitors Transmission daemon and tracker connectivity TELEGRAM_BOT_TOKEN="${TELEGRAM_BOT_TOKEN}" TELEGRAM_CHAT_ID="${TELEGRAM_CHAT_ID}" send_alert() { local message="$1" if [ -n "$TELEGRAM_BOT_TOKEN" ] && [ -n "$TELEGRAM_CHAT_ID" ]; then curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \ -d "chat_id=${TELEGRAM_CHAT_ID}" \ -d "text=🚨 Transmission Alert: ${message}" \ -d "parse_mode=HTML" > /dev/null fi } # Check if Transmission daemon is running if ! ps aux | grep transmission-daemon | grep sc-transmission | grep -v grep > /dev/null; then send_alert "Transmission daemon is not running!" echo "ERROR: Transmission daemon is not running" exit 1 fi # Check recent logs for tracker errors LOG_FILE="/volume1/@appdata/transmission/transmission.log" if [ -f "$LOG_FILE" ]; then # Count recent tracker errors (last 100 lines) ERROR_COUNT=$(tail -100 "$LOG_FILE" | grep -c "Announce error: Could not connect to tracker") if [ "$ERROR_COUNT" -gt 50 ]; then send_alert "High number of tracker errors detected: ${ERROR_COUNT} in recent logs" echo "WARNING: ${ERROR_COUNT} tracker errors found" fi # Check if log is stale (no updates in last hour) LOG_AGE=$(find "$LOG_FILE" -mmin +60 2>/dev/null) if [ -n "$LOG_AGE" ]; then send_alert "Transmission log hasn't been updated in over an hour - daemon may be stuck" echo "WARNING: Log file is stale" fi fi # Check if RPC port is listening if ! netstat -tln 2>/dev/null | grep -q ":9091 " && ! ss -tln 2>/dev/null | grep -q ":9091 "; then send_alert "Transmission RPC port 9091 is not listening" echo "ERROR: RPC port not listening" exit 1 fi echo "OK: Transmission health check passed" exit 0