Eteindre Mac à distance par SSH

jerem87

Membre confirmé
29 Septembre 2006
55
6
Bonjour à tous !

Je souhaiterais faire un petit script qui permettrait d'être un Mac à distance à l'aide de SSH.

Par le terminal, ça fonctionne sans problème, mais par script c'est une autre histoire, je n'ai jamais fait de script sur Mac avant celui là.

A préalable j'ai généré une clé publique et une clé privée afin qu'il n'y est pas la fameuse question du mot de passe lorsque je me connecte en ssh :

Lancez ssh-keygen (sur la machine local), et répondre par la touche "Entrée" à tout les questions.

Cela générera à la fois une clé publique et une clé privée. C'est la clé public qui nous intéresse ~/.ssh/id_rsa.pub .

Il faut la copier son contenu sur la machine distance dans un fichier appellé : authorized_keys (~/.ssh/authorized_keys).

Faire la même chose, mais dans le sens contraire, le ssh-keygen sur la machine distance et copier le fichier authorized_keys sur la machine local
Tout ça ça fonctionne.

J'ai fais 2 scripts, un qui se trouve sur la machine qui va "contrôlé" l'extinction et l'autre qui se trouve sur la machine distance à "éteindre".

Script 1 : shutdown.app (machine qui contrôle) :


  • Au début j'avais pensé à ça :
Bloc de code:
#!/bin/sh ssh [email protected]
#!/bin/sh ssh open /Users/aurelie/shutdown1.app
  • Ensuite à ça :
Bloc de code:
#!/bin/sh ssh [email protected]
#!/ssh open /Users/aurelie/shutdown1.app
--> Ni l'un ni l'autre n'a l'air de fonctionner.

Script 2 : shutdown1.app (machine à éteindre) :

Bloc de code:
tell application "Finder" to shut down
--> Il fonctionne lorsque je le lance à la main sur la machine distance, mais je n'arrive pas à l'exécuter depuis le 1er script.

Merci beaucoup pour votre aide.

Jérémie.
 
la syntaxe de ton script 1 est fausse.

le "#!/bin/sh" ne doit être présent qu'à la première ligne du script. Il permet au mac de savoir avec quel executable il doit être exécuté (/bin/sh, /bin/bash, /bin/tcsh ...).

si c'était juste ça, ça donnerais un script du type
Bloc de code:
#!/bin/sh
ssh [email protected]
ssh open /Users/aurelie/shutdown1.app

Mais ce script ne marchera pas non plus, à cause de l'utilisation de la commande ssh.
Si tu fais juste la commande "ssh [email protected]", il ouvre une session, et il restera bloqué sur cette commande jusqu'à la fermeture de la session.
Quand à "ssh open /Users/aurelie/shutdown1.app", le mac va la refuser.
La documentation sur ssh (en faisait "man ssh" dans un terminal) indique (enfin, en moins abregé)
Bloc de code:
ssh [user@]hostname [command]
If command is specified, it is executed on the remote host instead of a login shell
Il faut utiliser "ssh [email protected] open /Users/aurelie/shutdown1.app"

On obtient donc
Bloc de code:
#!/bin/sh
ssh [email protected] open /Users/aurelie/shutdown1.app
 
Bompi a ecrit un excelent commentaire il y a un peu de temps dans la section Unix et autres, si quelqu'un pouvait rappatrier ou fusionner cela serait pas mal

:zen:
 
Merci beaucoup, j'ai donc fait :

Bloc de code:
tell application "Terminal"
    activate
    do script "ssh 192.168.10.11 -l aurelie 'open /Users/aurelie/shutdown1.app'"
end tell

Et ça fonctionne niquel.

J'ai encore une question, est-il possible de faire un Apple Script qui monte des "lecteurs réseau", un dossier partagé sur un autre Mac ?

Merci encore !

Jérémie.