#!/bin/bash # Wake-on-LAN and shutdown script for f3s cluster (f0, f1, f2) # and optional shutdown for Raspberry Pi nodes (pi0–pi3) # # Usage: # wol-f3s # Wake all three Beelinks # wol-f3s f0 # Wake only f0 # wol-f3s f1 # Wake only f1 # wol-f3s f2 # Wake only f2 # wol-f3s shutdown # Shutdown all three Beelinks # wol-f3s shutdown-pis # Shutdown all four Raspberry Pis # wol-f3s shutdown-all # Shutdown Beelinks and Pis # MAC addresses F0_MAC="e8:ff:1e:d7:1c:ac" # f0 (192.168.1.130) F1_MAC="e8:ff:1e:d7:1e:44" # f1 (192.168.1.131) F2_MAC="e8:ff:1e:d7:1c:a0" # f2 (192.168.1.132) # IP addresses F0_IP="192.168.1.130" F1_IP="192.168.1.131" F2_IP="192.168.1.132" # Raspberry Pi IP addresses (no WoL support, shutdown only) PI0_IP="192.168.1.125" PI1_IP="192.168.1.126" PI2_IP="192.168.1.127" PI3_IP="192.168.1.128" # SSH user SSH_USER="paul" # Broadcast address for your LAN BROADCAST="192.168.1.255" wake() { local name=$1 local mac=$2 if [[ "$mac" == "XX:XX:XX:XX:XX:XX" ]]; then echo "⚠️ $name MAC address not configured yet" return 1 fi echo "Sending WoL packet to $name ($mac)..." wol -i "$BROADCAST" "$mac" } shutdown_host() { local name=$1 local ip=$2 echo "Shutting down $name ($ip)..." ssh -o ConnectTimeout=5 "$SSH_USER@$ip" "doas poweroff" 2>/dev/null && \ echo " ✓ Shutdown command sent to $name" || \ echo " ✗ Failed to reach $name (already down?)" } ACTION="${1:-all}" case "$ACTION" in f0) wake "f0" "$F0_MAC" ;; f1) wake "f1" "$F1_MAC" ;; f2) wake "f2" "$F2_MAC" ;; all|"") wake "f0" "$F0_MAC" wake "f1" "$F1_MAC" wake "f2" "$F2_MAC" ;; shutdown|poweroff|down) # This is to mute Gogios alerts for a day ssh rex@blowfish.buetow.org touch /tmp/f3s_taken_down ssh rex@fishfinger.buetow.org touch /tmp/f3s_taken_down shutdown_host "f0" "$F0_IP" shutdown_host "f1" "$F1_IP" shutdown_host "f2" "$F2_IP" echo "" echo "✓ Shutdown commands sent to all Beelinks." exit 0 ;; shutdown-pis) shutdown_host "pi0" "$PI0_IP" shutdown_host "pi1" "$PI1_IP" shutdown_host "pi2" "$PI2_IP" shutdown_host "pi3" "$PI3_IP" echo "" echo "✓ Shutdown commands sent to all Pis." exit 0 ;; shutdown-all) ssh rex@blowfish.buetow.org touch /tmp/f3s_taken_down ssh rex@fishfinger.buetow.org touch /tmp/f3s_taken_down shutdown_host "f0" "$F0_IP" shutdown_host "f1" "$F1_IP" shutdown_host "f2" "$F2_IP" shutdown_host "pi0" "$PI0_IP" shutdown_host "pi1" "$PI1_IP" shutdown_host "pi2" "$PI2_IP" shutdown_host "pi3" "$PI3_IP" echo "" echo "✓ Shutdown commands sent to all machines." exit 0 ;; *) echo "Usage: $0 [f0|f1|f2|all|shutdown|shutdown-pis|shutdown-all]" exit 1 ;; esac echo "" echo "✓ WoL packets sent. Machines should boot in a few seconds." echo " Wait ~30 seconds, then try: ssh paul@192.168.1.130"