blob: 263763b6694ac354dd575e5e8b5e89c0f18ebbff (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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"
|