mar 8

Démarrer et éteindre un PC à distance

2010 | Catégorie : Informatique,Linux,Vie de Geek

Il s’agit ici d’exploiter une fonction « wake on lan » disponible sur la plus grande partie des cartes mères de PC. Le principe est envoyer un paquet « magique » via un port ethernet qui réveillera le PC. Cette méthode demande de petite connaissance en ligne de commande, mais rien d’insurmontable même pour un débutant.

NB: Je vois déjà poindre la question « est-ce que c’est possible de faire la même chose avec une carte WiFi ? » Eh bien la réponse et non si vous utilisez une clef ou un dongle USB WiFi, et je ne pense pas avec les carte PCI, PCI-express, PCMCIA et card-express WiFi. Car il faut que la carte reste à l’écoute du paquet « magique » et à ma connaissance les cartes WiFi sont inactives lorsque le PC est éteint.


Les pré-requis :

    - Posséder une carte mère et une carte réseau compatible Wake On Lan (WoL). Quasiment toutes les cartes conçues après 1996 sont compatibles. Cependant les cartes mères ayant une version de slot PCI inférieure à 2.2 doivent utiliser un connecteur « Wakeup-link » pour être raccordées à une carte réseau.
    - Il faut relever les adresses MAC des cartes réseaux des PC à réveiller.
    - Avoir les droits administrateur pour les systèmes linux.
    - Avoir un réseau local bien protégé contre les intrusions extérieures. Sinon vous risquez d’avoir des démarrages intempestifs dû à des bots malveillants.


Activer la fonction wake on lan dans le bios :

/!\ Toutes manipulations dans le bios présente un risque, ne touchez seulement que les réglages dont vous êtes sûr.

Cette fonction peut porter plusieurs nom selon les bios et les marques de cartes mères. La plupart du temps la fonction WoL se trouve dans la partie gestion d’énergie « Power Management ». On peut trouver les dénominations « WoL » « Wake on Lan » « Wake on PCI » etc… Réferrez-vous à la documentation de votre carte mère.

Certain PC portable, notamment ceux de la marque Acer, offre un Bios plutôt succinct ne proposant pas de débloquer cette fonction. Essayer de passer à la dernière version du bios on ne sait jamais. Sinon votre aventure s’arrête ici.


Définir un login automatique pour Ubuntu et conseil pour Windows XP :

Le but étant de chaîner le démarrage pour arriver sur le bureau de l’utilisateur. Cela peut servir s’il on désir accéder à l’ordinateur distant avec VNC par exemple. Si le démarrage reste bloqué sur le login ou GDM, VNC ne pourra pas se lancer correctement.

    - Ubuntu : L’idéal est de créer une session invité avec le minimum de droit possible. Pour cela aller dans Système>Administration>Utilisateurs et Groupes, authentifiez vous en tant que root, ajouter un utilisateur créer le compte invité et décocher les options de l’onglet Privilèges utilisateur. Le mot de passe root vous sera demandé pour toutes ces opérations décocher. Ensuite pour chaîner le démarrage aller dans Système>Administration>Fenêtre de connexion, authentifiez vous en tant que root, cocher Se connecter automatiquement en tant que choisir le compte invité et enfin cochez la case Attendre pour permettre à un utilisateur de se connecter avant le compte invité.
    - Windows XP : Par défaut Windows XP (Eh oui je n’ai pas de licence pour vista et Seven mais le principe reste le même) se connecte automatiquement s’il n’y a qu’un seul compte utilisateur. Qui plus est ce compte est toujours un compte administrateur, les risques sont très grand si une personne tente de s’introduire sur ce PC. Donc il est indispensable de créer un compte invité sans mot de passe et d’imposer un mot de passe au compte administrateur. Ensuite on utilisera TweakUI pour chaîner la connexion sur le compte invité (n’ayant pas de système windows XP sous la main je ne peux pas être plus précis).


Empêcher à l’extinction du PC que la carte réseau ne soit désactivée :

A ma connaissance les windows XP, Vista et Seven ne désactivent pas les cartes réseaux lorsque le PC est éteint. On peut le vérifier simplement en regardant si les led de la carte réseau restent allumé lorsque le PC est éteint.

Sur Ubuntu Hardy, Intrepid, Jaunty et Karmic (je n’ai pas essayé cette fonction sur les versions antérieures à Hardy) les cartes sont désactivées par défaut pour une raison de sécurité semble-t-il. Il faut donc la réactiver à chaque redémarrage. La solution est simple et la voici. Taper dans un terminal :

    sudo ifconfig

Repérer le nom « ethx » (la plupart du temps eth0) de la connexion réseau active (celle qui possède une adresse IP). Vous pouvez zn même temps relever son adresse Mac son la forme FF:FF:FF:FF:FF:FF . (chaque carte réseau a sa propre adresse MAC)

    sudo ethtool eth0

« eth0″ étant un exemple. Repérer la ligne « Wake-on: d » qui signifie que le WoL est désactivé.

Activer le WoL en tapant :

    sudo ethtool -s eth0 wol g
    sudo ethtool eth0

La ligne sera passer à « Wake-on: g » ce qui indique que le WoL est activé sur la carte réseau.

Une fois que ceci est vérifié il faut qu’à chaque redémarrage du PC que la carte réseau soit réactivée. Il faut éditer le fichier « rc.local » cela taper dans un terminal :

    sudo gedit /etc/rc.local

Pour faire simple ce fichier lance des lignes de commande au démarrage du système. La ligne de code suivante devra être placée juste avant la ligne « exit 0 » :

    ethtool -s eth0 wol g

Enregistrer et fermer Gedit. Cette ligne n’a pas besoin de « sudo » puisque ce fichier est exécuté en root.

Voilà votre PC sera à l’écoute du paquet « magique » qui le réveillera. Maintenant passons au PC qui pourra réveiller le dormeur.


Envoyer un paquet « magique » vers un PC endormi :

Le terme paquet « magique » est celui employé dans la documentation concernant le WoL. Bien que je n’aime pas ce terme (car il n’y a rien de magique en informatique) je l’utilise quand même pour me conformer au jargon.

Sur ubuntu il existe dans les dépôts un logiciel permettant d’envoyer le paquet « magique » grâce à l’adresse MAC du PC endormi. Pour l’installer taper dans un terminal :

    sudo apt-get -y install wakeonlan

Pour envoyer le paquet « magique » taper dans un terminal :

    wakeonlan FF:FF:FF:FF:FF:FF

Si tout se passe bien votre PC endormi doit se réveiller.

Note: Sur la dizaine de PC où j’utilise le WoL, une seule carte mère m’a posée des problèmes. C’est une Asus A8N5X avec un chipset nForce4 où la commande pour activer le réveil est assez particulière. Si l’adresse MAC du réseau est comme suit 00:AB:34:FE:67:CD par exemple il s’agira de taper l’inverse de l’adresse dans la ligne de commande ce qui donne « wakeonlan CD:67:FE:34:AB:00″ allez savoir pourquoi!! Apparemment cela ne concerne que les cartes mère avec le chipset nForce4. Plusieurs rapport de bug traîne depuis 3 ou 4 ans à ce sujet chez nVidia, debian et launchpad mais tous restent au point mort.

Sur Windows il existe un logiciel gratuit Wake on Lan assez efficace et simple d’emploi.

Sachez qu’il est possible d’envoyer un paquet magique via internet, mais avec certaines conditions qui peuvent remettre en cause la sécurité de votre réseau. Il faut ouvrir les ports 0, 7 ou 9 (selon les cartes réseau) de votre modem-routeur. Les paquets magiques envoyés doivent être encapsuler en UDP pour passer à travers le NAT du modem-routeur. Le PC endormi doit avoir une adresse IP fixe associé à sont adresse MAC car le réveil doit se faire par l’adresse IP et non par l’adresse MAC. Pour plus de précision voir ici en fin de page (je ne l’ai pas testé).


Comment arrêter un PC distant :

L’utilisation d’un tunnel SSH est une des méthodes les plus simple pour envoyer un « halt » dans un terminal du PC distant. Mais personnellement je préfère utiliser l’excellent Webmin qui dispose d’une grande diversité d’outil d’administration d’un système linux à distance grâce à une interface graphique via un navigateur internet (firefox de préférence). Webmin doit être installé sur le PC distant (à éteindre).

Ajouter le dépôt de webmin dans votre sources.list en tapant dans un terminal pour l’éditer :

    sudo gedit /etc/apt/sources.list

Ajouter à la fin du fichier cette ligne :

    deb http://download.webmin.com/download/repository sarge contrib

C’est un dépôt pour debian mais cela fonction très bien sur ubuntu.

Enregistrer et fermer le fichier. Puis valider la clef gpg du dépôt en tapant dans un terminal :

    wget http://www.webmin.com/jcameron-key.asc
    sudo apt-key add jcameron-key.asc
    sudo apt-get update

Pour installer webmin taper dans un terminal :

    sudo apt-get -y install webmin

Webmin est maintenant installé sur le PC que vous voulez éteindre à distance. Pour utiliser webmin sur le PC directement il suffit de taper dans la barre d’adresse de Firefox :

    https://127.0.0.1:10000 ou bien https://localhost:10000


Pour une connexion distante on peut taper dans la barre d’adresse de firefox de n’importe quel autre ordinateur du réseau :

    https://192.168.1.XXX:10000

192.168.1.XXX étant une adresse IP fixe au PC distant. Mais il possible de définir une adresse relative avec le nom du PC (pour les réseaux en DHCP) comme suit :

    https://nomdupc.local:10000

Le login et le mot de passe sont ceux utilisés par l’utilisateur du poste distant.

Une fois connecté, aller sur Others>Command Shell, puis taper « halt » et enfin appuyer sur le bouton Execute command: le PC distant s’éteindra en quelques secondes. Webmin permet de faire beaucoup plus de chose, mais ce n’est pas ici l’objet de cet article. J’aurai certainement l’occasion d’y revenir dans un autre article et m’attarder plus longuement sur ce logiciel.

Il y a une autre solution un peu plus lourde qui consiste à lancer une connexion sur le bureau à distance. Le paramétrage est assez simple mais il faut un bon débit sur le réseaux pour le transfert de la vidéo du bureau (100Mb/s soit 12Mo/s). L’activation de l’accès au Bureau à distance se fait dans « Système>Préférence>Bureaux à distance » là l’interface est assez explicite. Ensuite pour visionner le Bureau à distance aller dans « Applications>Internet>Visionneur de Bureaux à distance ».

Sur windows il doit certainement avoir un moyen d’éteindre le PC à distance, (VNC, ou en SSH avec Putty) mais j’avoue ne pas avoir creusé la question plus que ça. Cela fait bientôt 6 ans que j’ai abandonné Windows que je connaissais comme le fond de poche à l’époque. Mais aujourd’hui je n’ai plus vraiment la patience de suivre les évolutions des nouveaux opus Vista et encore moins Seven. Donc si vous avez des sotutions pour windows n’hésitez pas, les commentaires sont là pour ça.

Une petite dernière précision, lorsqu’on éteint les PC avec l’interrupteur à l’arrière de l’alimentation ou quand une panne de courant survient, quasiment toutes les cartes mères ne réactivent pas d’elle même la carte réseau lorsque le courant revient. Il est alors nécessaire de démarrer une fois manuellement les PC pour réactiver les cartes réseaux. Une autre solution consisterait à configurer dans le BIOS la position ON après une coupure de courant cela aura pour effet de rallumer tous les ordinateurs quand le courant revient.

Et enfin je finirai par une mise en garde, si vous disposez d’un parc de 30 PC à démarrer en même temps par script, échelonnez les démarrages 2 par 2 avec un interval de 10 secondes. Cela évite un pic élevé de consommation qui serait perçu par l’installation électrique comme un court-circuit et donc le déclenchement du différentiel. (J’en ai eu l’expérience en démarrant mes 5 PC simultanément chez moi ^^; )

Mithrandir79

Les commentaires sont désactivés pour ce billet

Les commentaires sont désactivés.