Bonsoir Kalouk,
Ton code présente quelques erreurs. Reprenons les dans l'ordre (sans gousse d'ail - encore que je n'ai pas essayé avec !):
La variable attendue par la commande wol doit être une adresse MAC, soit "00:23:54:40:EF:AB", alors que tu lui envoies "TITI 00:23:54:40:EF:AB".
Cela ne peut réveiller le "Titi" !
Tu veux avoir une liste de machines. Il suffit de faire 2 listes, l'une des noms, l'autre des adresses, en prenant bien soin de garder le même ordre :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Set Noms to {"Titi" , "Toto"}
Set Adr to {"00:23:54:40:EF:AB" , "00:23:54:41:AF:FB" }
Set List_Noms to choose from list Noms OK button name "Réveiller" cancel button name "Annuler" with multiple selections allowed and empty selection allowed
-- si l'utilisateur click to "Annuler", fin de programe
if result = false then return
Repeat with N in Liste_Noms
-- recherche du numéro de N dans la liste des noms
Set Numero to 0
repeat with I from 1 to count of Noms
if (Item I of Noms) = N then set Numero to I
end repeat
-- il faut réveiller wol avec l'adresse : item Numero of Adr
do shell script "/ScriptWol/wol/wol " & (item Numero of Adr)
end repeat |
Enfin, ton ping pose 3 problèmes :
1) Certaines machines (en particulier sur PC Window) ne répondent pas, par défaut au ping. C'est vu comme une protection par défaut ! Dans ces cas, pas de réponse ne veut pas dire que la machine n'est pas réveillée ... gousse d'ail ou pas, c'est pareil.
2) Ton bloc try, autour du ping donnera une erreur si le do shell script comporte une erreur, pas si le ping lui-même est exécuté sans problème (même si son résultat est un time out !). C'est ce qui se passe pour ton code. L'instruction ping ne pose pas de problème, donc pas d'erreur sur le bloc try. Simplement le résultat du ping est peut être un time out !
3) Attention, la majeur partie des réseaux locaux utilisent un serveur DHCP (ta box Free, Orange, ...ou autres !) ce qui ne garantie pas que l'adresse IP de la machine distante sera toujours la même ! Après une panne de courant secteur affectant ta box et ton réseau, ton 192.168.0.2 peut devenir pour cette machine un 192.168.0.8 !
Tu as cependant raison sur un point : un ping -c 3 suffit largement.
Que faire pour le ping ?
1) Ne pas utiliser l'IP directe, mais utiliser le nom (les box modernes ont un DNS intégré). Or, ce nom ne change pas !
2) Utiliser alors une commande "host" pour faire le lien Nom DNS -> IP
3) Lire le texte résultant du ping (variable Applescript = Result) et tester si il contient "request timeout". Dans ce cas, c'est que la machine ne réponds pas.
Je n'ai pas de solution pour le ping d'une machine qui a pour instruction de ne pas répondre au ping !
En pratique, comme indiqué précédemment, je préfère directement monter un volume distant, ce qui est finalement plus simple que de faire un ping ! tester si ce volume est dispo est bien plus simple. En général, on réveille une machine distante pour y accéder, pas pour la "pinguer" !
Bon courage
Partager