WakeOnLan // Réveil, arrêt, redémarrage (et bien plus encore) de postes distants ; utilisation scriptable possible

wakeonlan01.png
français anglais allemand espagnol italien portugais roumain   (pour contribuer, rendez-vous sur la page des fichiers de langues)

Besoin d'intervenir sur un pc situé dans un bureau éloigné du votre et sur lequel vous possédez des droits d'administration (ou de connexion au bureau à distance) ? Le hic, c'est que cela n'est possible que lorsque la machine en question est allumée...

Plutôt que d'utiliser certains outils du même genre mais à l'ergonomie discutable, essayez ce WakeOnLan avec lequel vous allez pouvoir tester l'état des machines (grâce à des Ping très rapides) que vous aurez préalablement déclarées et redémarrer celles que vous souhaitez en un seul clic.

A noter que le réveil d'un pc n'est possible que :

  • s'il possède un adaptateur réseau (intégré à la carte-mère ou carte additionnelle) compatible avec le réveil à distance,
  • si cet adaptateur est raccordé au connecteur WOL de la carte-mère (sur les anciennes configurations matérielles)
  • si cet adaptateur est correctement configuré (paramétrage sous Windows)
  • si le BIOS de la machine est configuré pour permettre le réveil à distance

Mais le réveil à distance n'est pas la seule corde que cet outil a à son arc puisqu'il permet aussi de redémarrer, d'éteindre, de mettre en veille prolongée, de fermer/verrouiller la session sur une ou plusieurs machines distantes. Il faut toutefois que la configuration de la machine 'cible' le permette : le service 'serveur' doit notamment être démarré et vous (l'utilisateur qui souhaite éteindre la machine à distance) devez avoir des privilèges suffisants. A noter que certaines fonctionnalités ne sont pas accessibles aux postes sous Win9x...

Depuis la v3.0, WakeOnLan peut aussi être utilisé en mode ligne de commande. Pour plus d'informations à ce sujet, ouvrez une fenêtre d'invite de commandes, placez-vous dans le dossier dans lequel se trouve l'appli, et tapez WakeOnLanBatch /? (ça fonctionne aussi sans paramètre).

Avec la sortie de la v3.2, l'outil offre désormais la possibilité de réveiller des machines via Internet (fonctionnalité WakeOnWan, ou WOW)...
 

Télécharger Télécharger ce logiciel (version installeur) Télécharger Télécharger le script wakeonwan.php

Télécharger  Télécharger ce logiciel (version portable ZIP)

Note importante aux utilisateurs des versions portables

Date de création : 18/03/2005 @ 23:39
Dernière modification : 01/10/2017 @ 10:29
Catégorie : - Aide à l'administration
Page lue 239133 fois
 

Réactions à cet article

Réaction n°294 

par Jean le 04/04/2015 @ 10:58

Bonjour et merci pour tout ces soft qui facilite bien la vie!

J'ai une question au sujet de l'export des fichier (wakeonlan et dipiscan) en .txt
 J'aimerais pouvoir les convertir dans un format .xml pour le  soft italc avec des balises...

Le problème vient des séparateur qui ne marche pas bien a part (tab). Il y a t'il une astuce pour avoir des séparateur du style (;) ou autre qui marche et comment?
exemple fichier original:

192.168.1.12    1 ms        Pc test        NomDeDomaine    B8-AC-6F-B9-75-45

exemple de fichier a obtenir:
 

Code: xml
 <?xml version="1.0"?>
<!DOCTYPE italc-config-file>
<globalclientconfig version="2.0.2">
  <body>
    <classroom name="salle test">
      <client hostname="192.168.1.12" mac="B8:AC:6F:B9:75:45" type="0" id="1313" name="Pc test"/>
    </classroom>
  </body>
</globalclientconfig>
triste

[réponse de damien, le 04/04/2015 à 14h09]

Désolé pour le retard de ma réponse mais je t'ai préparé un script qui accepte les formats d'export (.txt) de Dipiscan et IPScan32 ainsi que les fichier de conf de WakeOnLan. Recopie le code suivant dans un fichier .vbs et fais glisser le fichier à convertir sur ledit script...

Export2Xml.vbs

Option Explicit

Const ForReading = 1
Dim objFSO, objFichierEntree, objFichierSortie
Dim strSeparateur, strLigne, strSection
Dim arrMachine
Dim intColHost, intColName, intColMac, intId, intR
Dim boolIni

If WScript.Arguments.Count = 0 Or WScript.Arguments.Count > 1 then
    Msgbox "Paramètre manquant : faire glisser un et un seul fichier à traiter sur le script.", vbExclamation, WScript.ScriptName
    WScript.Quit
End If

boolIni = (Right(LCase(WScript.Arguments(0)), 4) = ".ini")

If boolIni = True Then
    strSeparateur = "|"
    intColHost = 1
    intColName = 0
    intColMac = 4

Else
    strSeparateur = vbTab
   
    intR = Msgbox("S'agit-il d'un export de Dipiscan (oui) ou d'IPScan32 (non), ou ni l'un ni l'autre (annuler)", vbQuestion or vbYesNoCancel, WScript.ScriptName)
   
    Select Case intR
    Case vbYes:
        intColHost = 0
        intColName = 2
        intColMac = 6       
       
    Case vbNo:   
        intColHost = 0
        intColName = 1
        intColMac = 5   
   
    Case Else:
        Msgbox "Format non supporté", vbExclamation, WScript.ScriptName
        WScript.Quit
    End Select

End If

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFichierEntree = objFSO.OpenTextFile(WScript.Arguments(0), ForReading)
Set objFichierSortie = objFSO.CreateTextFile(WScript.Arguments(0) & ".xml")

Call Ecris("<?xml version=""1.0""?>^r^n", null)
Call Ecris("<!DOCTYPE italc-config-file>^r^n", null)
Call Ecris("<globalclientconfig version=""2.0.2"">^r^n", null)
Call Ecris("^t<body>^r^n", null)

intId = 1

While not(objFichierEntree.AtEndOfStream)
    strLigne = Trim(objFichierEntree.ReadLine)
   
    If boolIni = True Then
        If Left(strLigne, 1) = "[" And Right(strLigne, 1) = "]" And LCase(strLigne) <> "[config]" Then
            If strSection <> "" Then
                Call Ecris("tt</classroom>rn", null)
            End If
           
            strSection = Replace(Replace(Trim(strLigne), "[", ""), "]", "")

            Call Ecris("^t^t<classroom name=""%v"">^r^n", Array(strSection))
       
        ElseIf strSection <> "" And Left(strLigne, 7) = "Machine" Then
            arrMachine = Split(Split(Trim(strLigne), "=")(1), strSeparateur)
           
            Call Ecris("^t^t^t<client hostname=""%v"" mac=""%v"" type=""0"" id=""%v"" name=""%v""/>^r^n", Array(arrMachine(intColHost), Replace(arrMachine(intColMac), "-", ":"), intId, arrMachine(intColName)))
           
            intId = intId + 1
        End If

    Else
        If strSection = "" Then
            strSection = Mid(WScript.Arguments(0), Instr(WScript.Arguments(0), "") + 1)

            Call Ecris("^t^t<classroom name=""%v"">^r^n", Array(strSection))
       
        ElseIf Left(strLigne, 1) <> "[" Then
            arrMachine = Split(Trim(strLigne), strSeparateur)
           
            Call Ecris("^t^t^t<client hostname=""%v"" mac=""%v"" type=""0"" id=""%v"" name=""%v""/>^r^n", Array(arrMachine(intColHost), Replace(arrMachine(intColMac), "-", ":"), intId, arrMachine(intColName)))
           
            intId = intId + 1
        End If
    End If
Wend

Call Ecris("^t^t</classroom>^r^n", null)
Call Ecris("^t</body>^r^n", null)
Call Ecris("</globalclientconfig>^r^n", null)

objFichierSortie.Close
objFichierEntree.Close

Msgbox "Traitement terminé.", vbInformation, Wscript.ScriptName

WScript.Quit

Sub Ecris(byval chaine, byval valeurs)
    Dim p, i
   
    p = Instr(chaine, "%v")
    i = 0
    While p > 0
        chaine = Left(chaine, p - 1) & valeurs(i) & Mid(chaine, p + 2)
        p = Instr(chaine, "%v")
       
        i = i + 1
    Wend
   
    chaine = Replace(chaine, "^t", vbTab)
    chaine = Replace(chaine, "^r", vbCr)
    chaine = Replace(chaine, "^n", vbLf)
   
    objFichierSortie.Write(chaine)
End Sub

Il est possible que tu aies besoin de faire quelques ajustements. Désolé mais je n'ai pas pris le temps de commenter le code ou de traiter la majorité des cas d'erreurs potentielles. C'est du vite-fait, c'est donc facilement améliorable.


Réaction n°293 

par jphellmann le 25/03/2015 @ 15:21

Bonjour,
félicitations pour cet outil bien pratique que j'utilise quotidiennement au travail , notamment pour administrer des salles informatiques à l'Université.
Les commandes personnalisables sont particulièrement pratiques.
J'ai un plantage en créant un dossier avec un nom uniquement numérique ( par ex: 019 ou 123 ) ; Erreur d’exécution '35603': Invalid key
L'erreur a l'air systématique quelque soit la chaîne numérique saisie.
Pas de souci dés lors qu'il y au moins une lettre dans le nom.

Ce n'est pas bloquant, mais le logiciel plantant brutalement, ça surprend cligne
Merci encore pour votre travail

[réponse de damien, le 25/03/2015 à 18h39]

Ça fait effectivement désordre, désolé. J'essaye de régler ça au plus tôt... oups

Merci pour les compliments et pour avoir pris quelques minutes de ton temps pour me signaler ce bug.


Réaction n°292 

par Goulven le 05/03/2015 @ 12:01

Bonjour,

Je voudrais savoir si il est possible de programmer des tâches hebdomadaire pour allumer tous les postes du parc info de mon entreprise, ou même exécuter un script pour faire cette tâche ?

Crdlt

[réponse de damien, le 05/03/2015 à 19h52]

Oui c'est possible avec l'outil WakeOnLanBatch inclus avec WakeOnLan.

En ce qui concerne la méthode, je te conseille de déclarer chaque machine dans WakeOnLan ce qui simplifiera considérablement le script de réveil qui consistera à exécuter la commande : WakeOnLanBatch.exe /W:*

Tu peux organiser les machines dans plusieurs dossiers (onglets) ce qui t'offrira plus de souplesse si tu veux ne réveiller qu'une certaine liste de machines. Exemple : WakeOnLanBatch.exe /W:Salle2!*

Pour ce qui est de déclarer tes machines, soit tu en as peu et tu peux les saisir à la main, soit la liste est longue et dans ce cas je te conseille de passer par un fichier texte contenant les principaux éléments (Nom, adresse IP, adresse MAC). Si tu n'as pas toutes ces infos, tu peux "tricher" mais il te faut au moins le nom des machines et utiliser une adresse MAC bidon. Exemple :

MACHINE1;MACHINE1;00:00:00:00:00:00
MACHINE2;MACHINE2;00:00:00:00:00:00
...
MACHINEn;MACHINEn;00:00:00:00:00:00

Reste ensuite à importer ça dans WakeOnLan par l'option "Importer une liste depuis un fichier texte" du menu "Fichier". Sélectionne le fichier ainsi constitué, choisis le séparateur (utilisé dans ton fichier) au moyen des boutons radios et clique 1 fois dans l'en-tête de chaque colonne (de gauche à droite) pour indiquer dans quelle colonne l'information devra être placée. Enfin, clique sur OK pour procéder à l'import. Si tu as mis des adresses MAC bidon il te faudra utiliser l'option "Mettre à jour les adresses MAC" du menu "Options". Pour que cela fonctionne, il faut que les machines soient allumées, répondent au PING et aux requêtes NetBIOS (voir réglage du firewall)...

Bien entendu, le premier prérequis technique est que tes machines soient "sensibles" au réveil par paquet magique. Avant de te lancer dans la constitution de la liste complète de tes machines, je t'invite à en tester quelques-unes via l'outil. Si tu n'as jamais eu l'occasion de tester, je te conseille 2 tutos (http://www.aidewindows.net/wake_on_lan.php et http://nilz.fr/wake-on-lan-ou-comment-allumer-votre-marchine-a-distance-via-le-reseau) qui sont plutôt bien faits.

Enfin, si tu rencontres des problèmes ou que tu as des questions, tu trouveras de nombreuses réponses dans les commentaires de ce présent article et dans mes réponses.


Réaction n°291 

par Aksl le 04/03/2015 @ 11:30

Bonjour,
J'ai cherché sur google mais je ne trouve pas de réponses à mon problème.
Lorsque j'exécute le fichier WakeOnLanBatch à partir de l'invite de commande, j'ai cette erreur :
Le fichier de configuration spécifié n'a pas été trouvé...
Savez vous d'où vient cette erreur ?
Merci d'avance

[réponse de damien, le 04/03/2015 à 18h29]

En fait, pour pouvoir utiliser WakeOnLanBatch, il faut auparavant avoir lancé au moins une fois WakeOnLan pour créer le fichier de configuration commun aux deux applis. Après ça tu ne devrais plus être embêté par ce problème.


Réaction n°290 

par JoLaPatate le 24/02/2015 @ 13:56

Bonjour,
J'utilise ce logiciel quotidiennement et je le trouve super.
Donc un gros merci pour ce petit soft bien pratique.
Excellent travail :)

[réponse de damien, le 24/02/2015 à 18h00]

Un "client" de plus qui est satisfait, c'est cool. Et ce qui l'est d'autant plus, c'est d'avoir pris quelques instants pour partager l'info. Je t'en remercie. cligne


Réaction n°289 

par Alain le 18/02/2015 @ 12:20

Bonjour

Logiciel bien pratique et bien conçu

Peut on exporter et importer les données?

Merci d'avance

AL

[réponse de damien, le 18/02/2015 à 17h51]

Tu peux importer des données par le biais de 2 modules accessibles depuis le menu "Fichier". Quant à l'export, l'appli n'offre pas une telle fonctionnalité mais celle-ci stockant les informations dans un fichier de configuration sous forme texte (.ini), tu peux aisément les récupérer.

Ledit fichier se trouve :

  • soit dans le dossier d'installation de l'appli si la version de Windows est antérieure à Vista OU que l'UAC a été désactivée OU que l'appli est exécutée en tant qu'administrateur OU qu'elle est installée ailleurs que dans %programfiles% [ou %programfiles(x86)% si l'OS est 64 bits] OU enfin qu'elle n'est pas installée mais utilisée en mode portable.
  • soit dans le virtual store (C:\Users\%username%\AppData\Local\VirtualStore\Program Files\Dipisoft\WakeOnLan)


Réaction n°288 

par Fernand le 11/02/2015 @ 20:54

Bonjour

Mon ordinateur portable est connecté sur ethernet à la maison.

Je désire réveiller mon portable par wifi avec la Surface pro 3 sur Windows 8.1. donc je ne suis pas à la maison.

Comment faire

Fernand

[réponse de damien, le 12/02/2015 à 08h22]

Si l'ordi portable à réveiller est connecté à internet en wifi, tu peux oublier : ce n'est pas possible. En revanche, s'il est connecté en "filaire" (ethernet), c'est possible grâce à n'importe quelle appli offrant la fonctionnalité WakeOnWan. Mes applis WakeOnLan et Dipiscan le permettent, mais tu peux également le faire à partir de certains sites web (la page Réveil d'un poste à distance de mon site, par exemple).

Il te faudra renseigner :

  • l'adresse IP publique de ta connexion (que tu peux obtenir sur la page Mon adresse IP de mon site, par exemple)
  • l'adresse MAC du portable (attention à prendre la bonne adresse, celle de l'interface ethernet en l'occurrence)
  • le port que tu auras paramétré dans ton routeur pour atteindre ladite machine (configurée en IP fixe)

J'espère que c'est assez clair, sinon regarde dans les autres commentaires, le sujet est déjà abordé à plusieurs reprises.


Réaction n°287 

par lolo le 13/01/2015 @ 08:11

Bonjour,

merci de ta réponse

[réponse de damien, le 13/01/2015 à 12h21]

Il n'y a pas de quoi... tu l'aurais eu plus rapidement si tu avais indiqué une adresse mail correcte. portnawak


Réaction n°286 

par lolo le 08/01/2015 @ 15:45

Bonjour,

Y'aura t'il un moyen de récupérer les adresses ip a partir des noms des stations via une commande 'générale' (tout comme la mise a jour des adresses MAc)

Merci

[réponse de damien, le 08/01/2015 à 20h28]

Mon appli WakeOnLan n'offre pas cette fonctionnalité mais tu peux le faire avec Dipiscan. Par ailleurs, tu peux très bien ne pas utiliser les adresses IP dans WakeOnLan, celui-ci accepte également de travailler avec les noms (netbios ou dns) des machines...


Réaction n°285 

par Hocis le 23/12/2014 @ 12:26

Bonjour, et bien t'en dire plus va etre difficile. Je suis allé dans les configs du PC pour activer le tout, idem sur ma freebox révolution. Avec l'appli WOL de l'app store ca marche, mais je sais pas pq, quand j'éteins l'ordi et que je veux le rallumer avec l'appli ca ne marche pas, il faut que je débranche/branche l'alim sinon ca ne marche pas. Donc dans le BIOS j'ai prit l'adresse physique MAC et ip personnelle dans la zone "ethernet ethernet" mais comme ca ne marchait pas j'ai prit celles de "ethernet connexion réseau local" mais ca ne marche pas non plus. J'ai essayé de changé le port et rien. J'ai ensuite essayé de mettre mon ip publique (que j'ai trouvé en faisant monip.org sur internet) mais encore rien. Merci de ton aide.

[réponse de damien, le 23/12/2014 à 14h02]

Si on commençait par le début : que souhaites-tu faire précisément ?

  1. Réveiller un PC situé chez toi à partir d'un autre également situé chez toi ?
  2. Ou réveiller un PC situé chez toi depuis l'extérieur (boulot, chez un ami ou même depuis un téléphone portable) ?

Si tout se situe sur ton "réseau interne", donc réponse 1, il faut spécifier (dans mon outil) l'adresse IP de la machine "cible" et son adresse MAC. En fait, le paquet ne sera pas adressé à l'IP spécifiée mais à l'adresse de broadcast calculée d'après cette IP et le masque de sous-réseau (par défaut 255.255.255.0 sauf si tu l'as modifié, soit de façon globale à l'appli dans la fenêtre de configuration, soit dans les propriétés de la machine que tu as créée). Quant au port, il n'a ici que peu d'importance. Donc, si ta machine est sur le brin local 192.168.0 et que le masque est 255.255.255.0, le paquet sera envoyé vers 192.168.0.255 ce qui aura pour effet de l'envoyer à toutes les machines du brin (pratique si tu as activé DHCP sur ton réseau). Pour effectuer le réveil via mon appli, il te faudra sélectionner la machine "cible" puis cliquer sur le bouton "Réveiller la sélection". Seule la carte réseau dont la MAC a été spécifiée réagira à la demande de réveil, du moins si la machine est correctement configurée, que tu ne t'es pas trompé de MAC (ce qui peut arriver, notamment sur les portables qui ont plusieurs MAC) et que tu n'as pas fait d'erreur dans sa saisie... 

En revanche, si les machines se situent sur des réseau différents, donc réponse 2, c'est l'IP publique de la box derrière laquelle se trouve la machine à réveiller qu'il faudra spécifier ou éventuellement son alias Dyndns (ou autre) si cette adresse n'est pas fixe. Pour ce qui est de l'adresse MAC, c'est toujours celle de la machine à réveiller qu'il faut indiquer. Là où ça se complique, c'est qu'il est nécessaire de configurer le routeur pour qu'il transmette le paquet magique vers la bonne machine (à configurer en IP fixe, par conséquent) ou d'activer la fonction Proxy-WOL dans le cas des FreeBox. Dans ce mode le port est très important, il doit correspondre à la configuration attendue par le routeur (9 pour la FreeBox en principe). Pour effectuer le réveil via mon appli, il faudra cette fois utiliser la commande "Réveiller via Internet (WOW)" obtenue en cliquant sur le bouton "flèche vers le bas" situé à droite du bouton "Réveiller la sélection" ou par le menu contextuel. Tu peux également réveiller la machine depuis des sites Web qui proposent ce service (c'est gratuit sur mon site) ou depuis des applis pour téléphone portable.

J'espère que ces explications te seront utiles pour y aller un peu moins "à tâtons"...

N'hésite pas à revenir vers moi si tu n'y arrives pas. On pourra essayer de tester une prise de main à distance via TeamViewer si nécessaire.