Wake On Lan
2 avr. 2008
Par Strider - Linux - Lien permanent
Le Wake On LAN est une fonction qui permet d'allumer sa machine via un paquet envoyé a la carte réseau. Cette option est disponible sur la plupart des cartes mères modernes possédant un chipset ethernet intégré et doit être activer dans les options du BIOS (sur certains BIOS cette option est appelé Wake On PCI).
Nous verrons comment utiliser le Wake On LAN avec la ligne de commande , puis comment automatiser ceci avec cron et enfin comment allumer sa machine a partir d'une page web avec un script PHP.
Nous verrons comment utiliser le Wake On LAN avec la ligne de commande , puis comment automatiser ceci avec cron et enfin comment allumer sa machine a partir d'une page web avec un script PHP.
La ligne de commande
Sur un système Debian/Ubuntu il faut installer le paquet wakeonlan sur le serveur :sudo apt-get install wakeonlan
On récupère l'adresse MAC de la machine a allumer sur linux avec ifconfig :
eth0 Lien encap:Ethernet HWaddr 00:11:22:33:44:55ou sur windows avec ipconfig /all
Adresse physique . . . . . . . . .: 00-11-22-33-44-55Une fois la machine éteinte, le voyant de la carte réseau doit clignoter , on peut alors lancer wakeonlan :
wakeonlan -i 192.168.0.255 00:11:22:33:44:55Le paramètre -i précise l'adresse de broadcast du réseau local. En effet, votre serveur possède certainement plusieurs interfaces réseaux , il faut préciser sur quel réseau envoyer le paquet sinon l'allumage ne fonctionnera pas. Si tout c'est bien passé , la machine cliente devrais s'allumer !
Automatisation de WoL
Les cartes mères possèdent en général une fonction d'allumage automatique selon l'heure de la journée mais les options restent toutefois limitées et on peut désirer des réglages plus fins. Ceci est possible avec l'utilisation de crontab, qui planifie le lancement de tâches a intervalles réguliers. Nous allons configurer cron pour allumer la machine du lundi au vendredi a 7h30 On lance la commandecrontab -eet on insère la ligne suivante :
30 7 * * 1-5 wakeonlan -i 192.168.0.255 00:11:22:33:44:55Beaucoup d'autres réglages sont possibles, pour plus d'informations la page de Crontab sur Wikipedia donne des explications plus détaillées.
Utilisation de Wake on LAN sur un site Web
Ici nous allons allumer une machine a partir d'une page Web, ce qui peut s'avérer plus pratique que la ligne de commande puisque cela ne necessite pas de connexion SSH pour accéder au serveur. Le script suivant a été pris sur ce blog. Merci a son auteur.function WakeOnLan($addr, $mac,$socket_number) { $addr_byte = explode(':', $mac); $hw_addr = ''; for ($a=0; $a <6; $a++) $hw_addr .= chr(hexdec($addr_byte[$a])); $msg = chr(255).chr(255).chr(255).chr(255).chr(255).chr(255); for ($a = 1; $a <= 16; $a++) $msg .= $hw_addr; // send it to the broadcast address using UDP // SQL_BROADCAST option isn't help!! $s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); if ($s == false) { echo "Error creating socket!\n"; echo "Error code is '".socket_last_error($s)."' - " . socket_strerror(socket_last_error($s)); return FALSE; } else { // setting a broadcast option to socket: $opt_ret = socket_set_option($s, 1, 6, TRUE); if($opt_ret <0) { echo "setsockopt() failed, error: " . strerror($opt_ret) . "\n"; return FALSE; } if(socket_sendto($s, $msg, strlen($msg), 0, $addr, $socket_number)) { echo "Magic Packet sent successfully!"; socket_close($s); return TRUE; } else { echo "Magic packet failed!"; return FALSE; } } } // Port number where the computer is listening. Usually, any number between 1-50000 will do. Normally people choose 7 or 9. $socket_number = "7"; // MAC Address of the listening computer's network device $mac_addy = "00:11:22:33:44:55"; // IP address of the listening computer. Input the domain name if you are using a hostname (like when under Dynamic DNS/IP) $ip_addy = "192.168.0.255"; WakeOnLan($ip_addy, $mac_addy,$socket_number);La page appelle la fonction WakeOnLan qui prends comme argument l'adresse de broadcast (ou un nom de domaine si le port vers lequel est acheminé le paquet est routé et qu'on appelle le script d'un serveur externe) , l'adresse MAC et un port (en général 7 ou 9).
Commentaires
Si tu connais une astuce pour faire du "reset on lan" je suis preneur, car ca coute cher un PDU administrable ^^
SigLa seule solution que je vois c'est de bricoler une interface ethernet qui viendrais se brancher sur les pins du reset de la carte mère.
StriderJe suppose que c'est faisable pour un prix raisonable , encore faut il avoir les connaissances pour le faire =D