summaryrefslogtreecommitdiff
path: root/scripts/wol-f3s
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"