Gerador de comandos de pacote mágico para Linux
Gere um comando nativo para bash ou zsh que envia um pacote mágico Wake on LAN no Linux. Usa Python 3, Perl ou bash /dev/udp, sem precisar instalar wakeonlan ou etherwake.
Entrada
Saída
Leia-me
O que é um pacote mágico Wake on LAN?
O Wake on LAN liga um computador em suspensão ou desligado pela rede. A placa de rede permanece ligada e aguarda um pacote mágico: 6 bytes FF seguidos pelo endereço MAC do computador 16 vezes, totalizando 102 bytes. Geralmente, ele é enviado como uma transmissão UDP para a porta 9 ou 7, para que todas as máquinas da rede local o recebam e apenas a máquina correspondente seja ativada. Primeiro, é preciso ativar o Wake on LAN nas configurações do BIOS ou UEFI do computador.
Ferramentas como wakeonlan e etherwake enviam esse pacote, mas nem sempre estão instaladas e, em um servidor ou NAS, talvez você não queira adicioná-las.
Descrição da ferramenta
Esta ferramenta gera um comando de uma linha que envia o pacote usando o que o Linux já tem. Digite o endereço MAC do computador que deseja ativar, em um destes formatos: 00:11:22:AA:BB:CC, 00-11-22-AA-BB-CC, 0011.22AA.BBCC ou 12 dígitos hexadecimais seguidos, e escolha como enviá-lo em Enviar com:
- Python 3 ou Perl, que funcionam no bash e no zsh, não precisam de acesso root e permitem transmissões
- Bash /dev/udp, que não exige a instalação de nada, mas só funciona no bash, não no zsh, e não permite transmissões
O endereço de transmissão ou IP começa como 255.255.255.255, e a porta UDP como 9. O Linux responde «Permissão negada» quando o bash envia para um endereço de transmissão, por isso a ferramenta avisa se você escolher Bash com um endereço terminado em .255. Em vez disso, use o endereço IP do próprio computador.
O comando é gerado no seu navegador. Copie-o e execute-o em qualquer máquina Linux na mesma rede.
Exemplos
Para 00:11:22:AA:BB:CC, com transmissão via Python 3 na porta 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, enviado diretamente ao computador em 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/9Recursos
- Versões do comando para Python 3, Perl e bash
- Aceita endereços MAC com dois-pontos, hífens, pontos ou sem separadores
- Avisa quando a versão para bash não consegue alcançar um endereço de transmissão