blob: 849cb73a8abb9e1186b9b2dfffc2305e957d0638 (
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
#!/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"
|