Si vous avez pour habitude d'éparpiller des PC un peu partout géographiquement parlant, alors le fait de pouvoir les allumer (et donc les éteindre) à distance doit vous intéresser. Pour cela il est nécessaire d'utiliser la technique du réveil à distance Wake on Wan qui pourrait se traduire par "allumer (un ordinateur) à travers le réseau internet".
Le WoW n'est autre que du Wake On Lan à travers Internet au lieu d'un réseau local, je ne rentrerai pas dans les détails de la mise en place qui nécessiterait un billet à elle tout seule. Pour faire simple l'idée c'est d'allumer un PC depuis n'importe où dans le monde dans le but de se connecter à distance (bureau à distance, ssh, vnc, http, etc.).
De nombreux sites et logiciels permettent le réveil à distance via WoW, c'est à dire l'envoie de la trame magique, le plus connu étant Depicus qui fournit une interface web, SOAP, en ligne de commande, une application iPhone/Android et j'en passe. Si vous êtes en IP fixe le recourt à ce type de service extérieur peu s'avérer dangereux dans le cas où le site exploite votre IP et l'adresse mac de la ou les machines à réveiller... car vous ne pourrez pas en changer. Seul le port est parfois paramétrable, le port 7 et 9 étant les plus utilisés.
Si vous aimez faire votre tambouille vous pouvez déclencher le réveil via un simple script PHP. Libre à vous ensuite de vous faire une interface agréable et (surtout) protégée par un .htaccess ou tout autre moyen (soyez imaginatif). Il existe de nombreux scripts sur la toile pour envoyer le paquet magique mais certains nécessitent une configuration et/ou des autorisations particulières pour fonctionner. Dans le cas où vous utilisez un hébergeur mutualisé ces scripts sont inopérants. Le seul script efficace que j'ai trouvé sur un site américain fonctionne même sur les pages persos Free.fr, réputées pour être restrictive.
<?php # Wake on LAN - (c) HotKey@spr.at, upgraded by Murzik # Modified by Allan Barizo http://www.hackernotcracker.com # Translated by Mr Xhark https://blogmotion.fr flush(); // Numéro du port d'écoute de l'ordinateur cible. Habituellement tout port compris entre 1 et 50000 fonctionnera mais les ports 7 ou 9 sont à privilégier. $socket_number = "9"; // Adresse MAC du périphérique réseau de l'ordinateur cible $mac_addy = "aa:bb:cc:dd:ee:ff"; // Adresse IP de l'ordinateur cible (ip publique de votre routeur/modem). Entrez le nom de domaine si vous en utilisez-un (tel que Dynamic DNS/IP). $ip_addy = gethostbyname("monpc.dyndns.org"); ## fonction ## 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 "Erreur lors de la création du socket!\n"; echo "Code d'erreur: '".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() a échoué, erreur: " . strerror($opt_ret) . "\n"; return FALSE; } if(socket_sendto($s, $msg, strlen($msg), 0, $addr, $socket_number)) { echo "Paquet magique émis avec succès!"; socket_close($s); return TRUE; } else { echo "L'envoie du paquet magique a échoué!"; return FALSE; } } } # envoi du paquet magique WakeOnLan($ip_addy, $mac_addy,$socket_number) ?>
En espérant que cela serve à quelqu'un. Si vous utilisez un firmware libre tel que Tomato voici la procédure pour activer le WoW à travers votre routeur.
Illustration CC http://www.flickr.com/photos/blazor85/3365758266/in/photostream/
Auteur : Mr Xhark
Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter
15 commentaires
Si vous avez des hébergeurs (gratuit) qui supporte ce script..
Ah oui, je me disait que par World of Warcraft c'était bizarre... :p
En tout cas ces sympa à savoir...
MacSim> D'après l'article, ca marche sur les pages Free, ca fait longtemps que je n'ai plus d'hébergement chez eux mais c'est gratuit, non ?
@MacSIM: il faut essayer car le script est plutôt passe partout. Sinon tu peux toujours passer par un site tiers comme Depicus.com
Merci pour cette info ! Je pense l'utiliser rapidement, c'est vraiment utile dans certaines situations.
Je suis un administrateur réseau. j'ai besoin vraiment de ce type de scripte merci.
Bonjour
je le lance me met que packet envoyé avec succès mais le pc ne démarre pas.si je passe pas par depicus cela marche.
Pouvez vous m'aider, merci.
Bonjour, ce script marchait chez moi depuis une page perso free depuis pas mal de temps mais ne marche plus depuis une ou deux semaines alors que le site depicus.com marche toujours. Le WakeOnLanMonitor ne détecte pas de paquets magiques envoyés. Est-ce que free a modifié quelque chose sur ses pages perso ?
smartiz : pour info quand j'ai testé (avril) sur les anciennes pages perso (créées il y a quelques années) moi ça fonctionnait, mais sur les "nouvelles" ça ne fonctionnait pas ...
Surement des configurations de serveur différentes, peut être qu'ils ont mis à jour ton serveur (ou tout les serveurs) ?
D'accord, en ce qui me concerne, c'est une très vieille page perso. Merci pour la réponse.
@smartiz: je vous conseille de demander sur les news proxad page persos, Yohan (le responsable) vous répondra probablement. Personnellement je pense à une limitation de fonction PHP. A noter que la plupart des fonctions permettant de faire du WoW étaient déjà bloquées à l'époque et que celle du socket était encore fonctionnelle.
Salut. Sais tu si il est possible a partir d'un script php d'allumer une machine qui est sur le même serveur que le serveur web?
Et donc sans paser par l'exterieur dans le scipt php.
Merci
@Joss: Oui c'est du Wake On Lan. Sur le même réseau tu veux dire ? Le script fonctionnera de la même façon.
j suis très ravi d avoir c code s il y à autre chose du genre communication distante pc et phone vis versa en free code j vous serais très reconnaissant.
merci beaucoup!!!
thanks.
Bonjour,
J'ai voulu tester cela avec uWamp : cela ne fonctionne pas ... Pourtant j'ai le message "Paquet magique émis avec succès!"
( ! ) Warning: socket_set_option() [function.socket-set-option]: unable to set socket option [0]: Un argument non valide a été fourni. in D:UwAmp-qualitewwwwolwol2-php.php on line 32