Compare commits
2 Commits
3927431f19
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| d459170c77 | |||
| 3db6162b10 |
50
brocade-monitor.sh
Normal file
50
brocade-monitor.sh
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
#!/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
|
||||||
129
brocade-status.sh
Executable file
129
brocade-status.sh
Executable file
@@ -0,0 +1,129 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Brocade ICX 6610-48P Status Dumper
|
||||||
|
# Connects via telnet and dumps switch info
|
||||||
|
|
||||||
|
SWITCH_IP="${BROCADE_IP:-192.168.1.2}"
|
||||||
|
SWITCH_USER="${BROCADE_USER:-root}"
|
||||||
|
SWITCH_PASS="${BROCADE_PASS:-palm7}"
|
||||||
|
TIMEOUT="${TIMEOUT:-30}"
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
CYAN='\033[0;36m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
# Function to run telnet command
|
||||||
|
telnet_cmd() {
|
||||||
|
local cmds="$1"
|
||||||
|
echo -e "enable\n$SWITCH_USER\n$SWITCH_PASS\n$cmds\nexit" | nc -w $TIMEOUT $SWITCH_IP 23 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
# Header
|
||||||
|
echo -e "${CYAN}╔══════════════════════════════════════════════════════════════╗${NC}"
|
||||||
|
echo -e "${CYAN}║ Brocade ICX 6610-48P Status Report ║${NC}"
|
||||||
|
echo -e "${CYAN}╚══════════════════════════════════════════════════════════════╝${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Timestamp
|
||||||
|
echo -e "${YELLOW}Timestamp:${NC} $(date '+%Y-%m-%d %H:%M:%S %Z')"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Uptime
|
||||||
|
echo -e "${CYAN}━━━ UPTIME ━━━${NC}"
|
||||||
|
uptime_output=$(telnet_cmd 'show version | include uptime' | grep -E 'uptime is')
|
||||||
|
echo "$uptime_output"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# System Info
|
||||||
|
echo -e "${CYAN}━━━ SYSTEM INFO ━━━${NC}"
|
||||||
|
sys_info=$(telnet_cmd 'show version' | grep -E '(SW:|HW:|compiled|Serial)')
|
||||||
|
echo "$sys_info"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Clock
|
||||||
|
echo -e "${CYAN}━━━ CLOCK ━━━${NC}"
|
||||||
|
clock=$(telnet_cmd 'show clock' | tail -2 | head -1)
|
||||||
|
echo "System Clock: $clock"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Temperature
|
||||||
|
echo -e "${CYAN}━━━ TEMPERATURE ━━━${NC}"
|
||||||
|
temps=$(telnet_cmd 'show chassis' | grep -A 20 'Temperature Readings')
|
||||||
|
echo "$temps" | grep -E '(MAC|CPU|sensor|stacking|Current)'
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Power Supply
|
||||||
|
echo -e "${CYAN}━━━ POWER SUPPLY ━━━${NC}"
|
||||||
|
power=$(telnet_cmd 'show chassis' | grep -A 5 'Power supply')
|
||||||
|
echo "$power"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Fans
|
||||||
|
echo -e "${CYAN}━━━ FANS ━━━${NC}"
|
||||||
|
fans=$(telnet_cmd 'show chassis' | grep -E 'Fan')
|
||||||
|
echo "$fans"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# PoE Status
|
||||||
|
echo -e "${CYAN}━━━ PoE STATUS ━━━${NC}"
|
||||||
|
poe=$(telnet_cmd 'show inline power' | grep -E '(Power Capacity|Power Allocations|Total)' | head -5)
|
||||||
|
echo "$poe"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Active Ports
|
||||||
|
echo -e "${CYAN}━━━ ACTIVE PORTS ━━━${NC}"
|
||||||
|
ports=$(telnet_cmd 'show interface brief' | grep 'Up' | grep 'Forward')
|
||||||
|
port_count=$(echo "$ports" | wc -l)
|
||||||
|
echo "Active ports: $port_count"
|
||||||
|
echo "$ports" | head -10
|
||||||
|
if [ $port_count -gt 10 ]; then
|
||||||
|
echo "... and $((port_count - 10)) more"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Recent Logs
|
||||||
|
echo -e "${CYAN}━━━ RECENT LOGS (last 10) ━━━${NC}"
|
||||||
|
logs=$(telnet_cmd 'show log' | grep -E '^\d+ days' | tail -10)
|
||||||
|
echo "$logs"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Health Summary
|
||||||
|
echo -e "${CYAN}━━━ HEALTH SUMMARY ━━━${NC}"
|
||||||
|
# Check uptime for stability
|
||||||
|
uptime_mins=$(echo "$uptime_output" | grep -oE '[0-9]+ hour' | awk '{print $1}' 2>/dev/null || echo "0")
|
||||||
|
uptime_mins=$((uptime_mins * 60))
|
||||||
|
uptime_mins=$((uptime_mins + $(echo "$uptime_output" | grep -oE '[0-9]+ minute' | awk '{print $1}' 2>/dev/null || echo "0")))
|
||||||
|
|
||||||
|
# Check temps
|
||||||
|
max_temp=$(telnet_cmd 'show chassis' | grep 'Current temperature' | grep -oE '[0-9]+\.[0-9]+' | sort -rn | head -1)
|
||||||
|
|
||||||
|
# Check clock
|
||||||
|
clock_year=$(echo "$clock" | grep -oE '[0-9]{4}' | tail -1)
|
||||||
|
|
||||||
|
# Health status
|
||||||
|
if [ "$uptime_mins" -lt 30 ]; then
|
||||||
|
echo -e "${RED}⚠ UPTIME:${NC} Less than 30 minutes - recent reboot detected!"
|
||||||
|
elif [ "$uptime_mins" -lt 60 ]; then
|
||||||
|
echo -e "${YELLOW}⚠ UPTIME:${NC} Less than 1 hour - monitor for stability"
|
||||||
|
else
|
||||||
|
echo -e "${GREEN}✓ UPTIME:${NC} Stable ($((uptime_mins / 60)) hours $((uptime_mins % 60)) minutes)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$max_temp" ] && (( $(echo "$max_temp > 70" | bc -l) )); then
|
||||||
|
echo -e "${RED}⚠ TEMPERATURE:${NC} High (${max_temp}°C)"
|
||||||
|
elif [ -n "$max_temp" ] && (( $(echo "$max_temp > 60" | bc -l) )); then
|
||||||
|
echo -e "${YELLOW}⚠ TEMPERATURE:${NC} Warm (${max_temp}°C)"
|
||||||
|
else
|
||||||
|
echo -e "${GREEN}✓ TEMPERATURE:${NC} Normal (${max_temp}°C)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$clock_year" = "0" ] || [ "$clock_year" = "2036" ]; then
|
||||||
|
echo -e "${RED}⚠ CLOCK:${NC} RTC battery dead - showing year $clock_year"
|
||||||
|
else
|
||||||
|
echo -e "${GREEN}✓ CLOCK:${NC} OK (${clock_year})"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${CYAN}══════════════════════════════════════════════════════════════${NC}"
|
||||||
Reference in New Issue
Block a user