Linux-generator voor Magic Packet-opdrachten
Genereer een native bash- of zsh-opdracht om vanuit Linux een Wake on LAN-magic packet te versturen. De opdracht gebruikt Python 3, Perl of bash /dev/udp, dus je hoeft wakeonlan of etherwake niet te installeren.
Invoer
Uitvoer
Readme
Wat is een Wake on LAN-magisch pakket?
Wake on LAN schakelt een computer die in de slaapstand staat of uitgeschakeld is in via het netwerk. De netwerkkaart blijft van stroom voorzien en luistert naar een magisch pakket: 6 bytes met de waarde FF, gevolgd door 16 keer het MAC-adres van de computer, in totaal 102 bytes. Het pakket wordt meestal als UDP-broadcast naar poort 9 of 7 verzonden, zodat elke machine op het lokale netwerk het ontvangt en alleen de machine met het overeenkomende adres wordt ingeschakeld. Wake on LAN moet eerst worden ingeschakeld in de BIOS- of UEFI-instellingen van de computer.
Tools zoals wakeonlan en etherwake kunnen het pakket verzenden, maar zijn niet altijd geïnstalleerd. Op een server of NAS wil je ze misschien ook niet toevoegen.
Beschrijving van de tool
Deze tool maakt een opdracht van één regel die het pakket verzendt met wat Linux al beschikbaar heeft. Voer het MAC-adres in van de computer die je wilt inschakelen, bijvoorbeeld als 00:11:22:AA:BB:CC, 00-11-22-AA-BB-CC, 0011.22AA.BBCC of 12 hexadecimale cijfers achter elkaar. Kies vervolgens hoe je het pakket wilt verzenden bij Verzenden met:
- Python 3 of Perl, die werken in bash en zsh, geen root-toegang nodig hebben en een broadcast kunnen verzenden
- Bash /dev/udp, waarvoor je niets hoeft te installeren, maar dat alleen werkt in bash, niet in zsh, en geen broadcast kan verzenden
Het broadcast- of IP-adres is standaard 255.255.255.255 en de UDP-poort is standaard 9. Linux geeft de melding "Toegang geweigerd" wanneer bash naar een broadcastadres verzendt. Daarom waarschuwt de tool je als je Bash kiest met een adres dat eindigt op .255. Gebruik in plaats daarvan het IP-adres van de computer zelf.
De opdracht wordt in je browser samengesteld. Kopieer de opdracht en voer deze uit op een Linux-machine in hetzelfde netwerk.
Voorbeelden
Voor 00:11:22:AA:BB:CC, met een broadcast via Python 3 op poort 9:
python3 -c 'import socket;s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM);s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1);s.sendto(bytes.fromhex("ff"*6+"001122aabbcc"*16),("255.255.255.255",9))'Bash, rechtstreeks verzonden naar de computer op 192.168.1.20:
printf "$(printf '\\xff%.0s' {1..6})$(printf '\\x00\\x11\\x22\\xaa\\xbb\\xcc%.0s' {1..16})" > /dev/udp/192.168.1.20/9Functies
- Opdrachtversies voor Python 3, Perl en bash
- Accepteert MAC-adressen met dubbele punten, streepjes, punten of zonder scheidingstekens
- Waarschuwt wanneer de bash-versie geen broadcastadres kan bereiken