Skrypt Wake-on-LAN - Jak zdalnie uruchomić komputer jedną komendą?

Mam stację roboczą, która jest wyłączona przez większość dnia. Kiedy jej potrzebuję — loguję się na La Potato przez SSH i odpalam jeden skrypt. Po kilku sekundach maszyna działa. Jak to zrobić?
Homelab
WakeOnLan
VPN
Sieci
Hardware
Author

De. Os.

Published

May 6, 2026

Skrypt Wake-on-LAN — jak zdalnie uruchomić komputer jedną komendą

Mam stację roboczą, która jest wyłączona przez większość dnia. Kiedy jej potrzebuję — loguję się na La Potato przez SSH i odpalam jeden skrypt. Po kilku sekundach maszyna działa. Jak to zrobić?

Jeśli nie wiesz o czym mówię, przeczytaj najpierw o całym setupie tutaj: Jak mam dostęp do stacji roboczej z dowolnego miejsca na świecie.

Co to jest Wake-on-LAN?

Wake-on-LAN (WoL) to funkcja, która pozwala uruchomić komputer zdalnie przez sieć. Komputer jest wyłączony, ale karta sieciowa nadal nasłuchuje. Kiedy dostanie specjalny pakiet (tzw. magic packet) z odpowiednim adresem MAC — uruchamia maszynę.

Żeby to działało, potrzebujesz dwóch rzeczy: włączonego WoL w BIOS-ie stacji roboczej i drugiego urządzenia w tej samej sieci, które wyśle magic packet. U mnie tym urządzeniem jest La Potato.

Skrypt

%%bash
#!/bin/bash
# Wake Ubuntu server/desktop

HOMELAB_MAC="14:4A:66:87:95:8A"
HOMELAB_IP="192.168.0.5"

echo "Waking HomeLab ..."
$wakeonlan HOMELAB_MAC

# Wait for IronBlaze
for i in {1..12}; do
        if ping -c 1 $HOMELAB_IP >/dev/null 2>&1; then
                #echo "Iron is awake!"
                echo "HomeLab is awake!"
                break
        fi
        echo "Waiting... ($i/12)"
        sleep 10
done
Waking HomeLab ...
HomeLab is awake!

Jak to działa?

Skrypt robi dwie rzeczy. Najpierw wysyła magic packet na adres MAC stacji roboczej za pomocą wakeonlan. Potem w pętli sprawdza co 10 sekund, czy maszyna już odpowiada na ping. Maksymalnie czeka 2 minuty (12 prób × 10 sekund). Kiedy stacja odpowie — wyświetla “HomeLab is awake!” i kończy.

>/dev/null 2>&1 to przekierowanie outputu — nie chcę widzieć komunikatów z pinga, interesuje mnie tylko czy przeszedł, czy nie.

Wymagania

Na La Potato (lub innym urządzeniu wysyłającym) musisz mieć zainstalowany pakiet wakeonlan:

sudo apt install wakeonlan

Na stacji roboczej — WoL musi być włączony w BIOS-ie (szukaj “Wake on LAN” albo “Power on by PCI-E”) i w systemie:

sudo ethtool -s eth0 wol g

Żeby ustawienie przetrwało restart, dodaj to do /etc/network/interfaces albo stwórz serwis systemd.

Warto wiedzieć

MAC adres to adres fizyczny karty sieciowej — nie zmienia się. IP w moim przypadku to adres Tailscale (100.x.x.x), ale magic packet działa na warstwie L2, więc oba urządzenia muszą być w tej samej sieci lokalnej. Dlatego La Potato stoi fizycznie obok stacji roboczej, podłączone do tego samego routera.

Ping na adres Tailscale służy tylko do sprawdzenia, czy maszyna się obudziła i dołączyła do sieci — sam WoL nie ma z Tailscale nic wspólnego.


🔗 Cały setup — Tailscale + Wake-on-LAN 🔗 Portfolio