diff options
Diffstat (limited to 'scripts/wol-f3s')
| -rwxr-xr-x | scripts/wol-f3s | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/scripts/wol-f3s b/scripts/wol-f3s new file mode 100755 index 0000000..263763b --- /dev/null +++ b/scripts/wol-f3s @@ -0,0 +1,86 @@ +#!/bin/bash +# Wake-on-LAN and shutdown script for f3s cluster (f0, f1, f2) +# +# 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 + +# 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" + +# 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 machines." + exit 0 + ;; + *) + echo "Usage: $0 [f0|f1|f2|all|shutdown]" + 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" |
