#!/bin/bash # Monitor Brocade ICX 6610-48P switch uptime # Detects random reboots and logs them SWITCH_IP="192.168.1.2" LOG_FILE="$HOME/.local/state/openclaw/brocade-monitor.log" STATE_FILE="$HOME/.local/state/openclaw/brocade-uptime.state" mkdir -p "$(dirname "$LOG_FILE")" # Get current uptime via SSH (requires sshpass) # Brocade CLI: show version | include "uptime" get_uptime() { sshpass -p 'palm7' ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \ -o ConnectTimeout=10 \ root@${SWITCH_IP} 'show version | include "uptime"' 2>/dev/null } # Alternative: check uptime via SNMP if available # snmpwalk -v2c -c public 192.168.1.2 sysUpTime # Check if switch is reachable check_switch() { local timestamp=$(date '+%Y-%m-%d %H:%M:%S') # Ping check (need raw socket) if nc -zv -w 5 ${SWITCH_IP} 22 2>&1 | grep -q "open"; then echo "[$timestamp] SSH port open" >> "$LOG_FILE" # Try to get uptime local uptime_output=$(get_uptime) if [ -n "$uptime_output" ]; then echo "[$timestamp] Uptime: $uptime_output" >> "$LOG_FILE" # Check for reboot (uptime decreased) if [ -f "$STATE_FILE" ]; then local prev_uptime=$(cat "$STATE_FILE") # Compare uptime values - if current < previous, reboot occurred # This is a simplified check; would need to parse actual uptime fi # Save current uptime echo "$uptime_output" > "$STATE_FILE" fi else echo "[$timestamp] SWITCH DOWN - Cannot connect to SSH port" >> "$LOG_FILE" fi } check_switch