Ligando um computador remotamente usando JAVA
Aposto que você já ouviu dizer que dá para desligar um computador remotamente, certo!? É fácil, basta pesquisar pelo comando shutdown tanto no Windows quanto na maioria das distribuições Linux.
Mas e se o que queremos é justamente ao contrário: ligar um computador à distância? A primeira resposta é que é possível, mas é necessário que alguns requisitos sejam atendidos.
Você reparou que em muitos computadores (verifique o seu!) mesmo quando desligados as luzes da placa de rede continuam acesas, piscando como se houvesse atividade? Pois é, na verdade, para esses computadores, ainda há atividade de rede, mesmo quando desligados, porém isso só acontece se estiverem conectados à rede elétrica.
Esse "fenômeno" indica que a placa-mãe do PC possui a capacidade de Wake-on-Lan (WoL). Essa funcionalidade é que permite, em teoria, que um computador seja ligado remotamente. Digo em teoria porque é preciso configurar na BIOS do equipamento a opção que torna efetivamente isso possível.
Ok, chega de papo e vamos testar! Você precisará saber o endereço IP de broadcast da sua rede (normalmente é endereço IP tradicional, porém terminado com 255) e o MAC address (endereço físico da placa de rede) do computador que você quer ligar. Também será necessário ter o JAVA instalado no computador que será utilizado para ligar o outro.
Com essas informações em mãos você pode usar esse programa [WakeOnLan.class], desenvolvido em JAVA, adaptado do original em http://www.jibble.org/wake-on-lan/, tanto no seu Windows quanto no Linux, se for o caso:
System.out.println("Forma de uso: java WakeOnLan ");
System.out.println("Exemplo: java WakeOnLan 192.168.0.255 00:0D:61:08:22:4A");
System.out.println("Exemplo: java WakeOnLan 192.168.0.255 00-0D-61-08-22-4A");
System.out.println("Pacote Wake-on-LAN enviado.");
System.out.println("Falha ao enviar o pacote Wake-on-LAN: " + e);
throw new IllegalArgumentException("MAC address inválido.");
throw new IllegalArgumentException("Dígito HEX inválido no MAC address.");
Para usá-lo é simples, em uma janela de linha de comando digite:
java WakeOnLan
java WakeOnLan 192.168.0.255 90-0F-61-09-22-4B
java WakeOnLan 192.168.0.255 90:0F:61:09:22:4B
Você poderá encontrar maiores informações de como isso acontece em http://www.dei.isep.ipp.pt/~andre/documentos/wol.html