Outils pour utilisateurs

Outils du site


veille_reveil

Mise en veille et réveil à distance

Problématique

Il se trouve que je n'ai pas la place dans mon petit bureau pour avoir plusieurs ordinateurs. De ce fait, j'en ai un à la cave, lié au réseau local par une liaison filiaire ethernet.

J'arrive à rebooter et à éteindre à distance l'ordinateur de la cave, mais si je l'éteint, il faut ensuite que je redescende pour le rallumer.

Alors, je me suis dit: si au lieu d'éteindre l'ordinateur, je déclenche sa mise en veille profonde, est-ce que je pourrais le rallumer à distance?

La réponse est oui! Et la solution trouvée est dessous.

Pour l'instant, ça marche avec Windows XP sur l'ordinateur à réveiller. J'essaierai ensuite sur Linux.

Mettre en veille à distance un ordinateur Windows XP

Pour mettre en veille profonde à distance un ordinateur Windows, il faut plusieurs conditions:

  • Il faut que la carte réseau ait la capacité de réveiller l'ordinateur (voir sa notice)
  • Il faut donner au bios l'accord pour que l'ordinateur puisse se réveiller avec la carte réseau
  • Il faut donner accord à la carte réseau dans Windows: panneau de configuration → système → gestion des périphériques → carte réseau → propriétés → onglet “gestion de l'alimentation”. Cocher les 3 lignes.
  • Il faut aussi permettre la veille profonde avec: panneau de configuration → gestion de l'alimentation → onglet “mise en veille prolongée” → cocher la case

Et, bien sûr, il faut pouvoir travailler à distance en graphique avec l'ordinateur Windows. J'utilise depuis peu le logiciel teamviewer (http://www.teamviewer.com/fr/index.aspx) qui est gratuit pour une utilisation personnelle et non-commerciale. Il est vraiment très rapide, et son seul inconvénient actuel est que l'audio n'est pas transmis. Vous pouvez aussi utiliser les logiciels de nomachine (nxclient - nxserver) ou VNC (tighvnc, realvnc, …).

Si ça ne marche pas, il faut voir pour donner accord pour que Windows accepte le contrôle à distance, et éventuellement de déverrouiller le bon port du pare-feu.

Pour accélérer encore, j'utilise dans teamviewer l'appel direct de l'adresse IP local (type 192.168.1.xxx) au lieu du code par défaut, ce qui suppose que l'ordinateur Windows distant dispose d'une adresse IP fixe. Cette adresse fixe est aussi nécessaire pour les autres logiciel de contrôle à distance.

Une fois tout cela en place, la mise en veille prolongée à distance se fait simplement à la page du bureau de Windows en arrêtant Windows par la veille prolongée: Démarrer → arrêter l'ordinateur → mise en veille. Pour que la mise en veille soit profonde, il faut appuyer en plus sur la touche majuscule en même temps qu'on clique sur le bouton veille.

Réveiller à distance un ordinateur Windows XP

Pour réveiller à distance un ordinateur, il faut lui envoyer par le réseau un “paquet magique”!!!

Il s'agit d'envoyer par protocole UDP une chaine d'octets (“paquet magique”) composée de:

  • 6 octets 0xFF
  • suivis de 16 fois les 6 octets de l'adresse mac du PC à réveiller (c'est l'adresse “hard” de la carte réseau)

Voilà le code Python qui permet cela:

import socket
 
def envoiwol(admac):
    """ réveil d'un ordinateur en veille par envoi du "paquet magique" """
    pm = ""
    for i in admac.split(':'):
        pm += chr(int(i,16))
    pm = "\xFF"*6 + pm*16
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    s.sendto(pm, ('<broadcast>', 7))
    s.close()
 
envoiwol('0:27:51:8d:6d:1d')  # vous mettez la bonne adresse mac!

Pour mémoire, cela s'appelle le “wake on lan” (“wol”) et vous trouverez pas mal de doc sur internet en utilisant ces mots.

Après avoir exécuté ce code, vous attendez une minute ou deux, et vous pouvez lancer votre accès à distance par teamviewer (ou nxclient, ou VNC, etc…).

Mes 2 ordinateurs, celui que j'utilise et celui que je veux réveiller, sont liés par une liaison ethernet avec un switch. J'ai aussi essayé de réveiller l'ordinateur distant avec un portable en wifi, et je n'ai pas réussi, probablement parce que la liaison wifi passe alors par mon routeur (livebox d'orange) dont les insuffisances concernant cette question sont connues. Si la liaison chez vous devait nécessairement passer par wifi, j'essaierais une liaison par le courant porteur qui a des chances de simuler une liaison ethernet, avec un regroupement des ordinateurs par switch avant le routeur. J'ai découvert les switchs l'année dernière et je suis impressionné par leur efficacité (en plus, j'ai un switch Belkin de débit gigabit, et les 2 ordinateurs ont aussi des cartes réseau avec un débit gigabit).

Voilà pour Windows. Prochaine étape: Linux.


Amusez-vous bien!

veille_reveil.txt · Dernière modification: 2009/10/02 08:41 par tyrtamos

Outils de la page