Comment utiliser ssh dans un script shell?

quand j'essaie d'utiliser une commande ssh dans un script shell, la commande reste là. Avez-vous un exemple d'utilisation de ssh dans un script shell?

13
demandé sur Jon Ericson 2008-08-27 02:05:37

5 réponses

Dépend de ce que vous voulez faire et comment vous l'utilisez. Si vous voulez simplement exécuter une commande à distance et en toute sécurité sur une autre machine, utilisez

ssh user@host command

par exemple

ssh user@host ls

pour ce faire en toute sécurité, vous devez soit demander à l'utilisateur le mot de passe pendant l'exécution, soit configurer les clés sur la machine distante.

30
répondu Mats Fredriksson 2008-08-26 22:19:48

tout d'abord, vous devez vous assurer que vous avez mis en place sans mot de passe (connexion à clé publique). Il y a au moins deux saveurs de ssh avec des formats de fichiers de configuration légèrement différents. Cochez la page de manuel ssh sur votre système, consultez votre administrateur système local ou passez à comment configurer L'authentification par clé publique? .

pour exécuter ssh en mode discontinu( comme dans un script shell), vous devez passer une commande vous voulez être en course. La syntaxe est:

ssh host command

si vous voulez exécuter plus d'une commande en même temps, utilisez les guillemets et les points-virgule:

ssh host "command1; command2"

les guillemets sont nécessaires pour protéger le point-virgule de l'interpréteur de commandes. Si vous les avez laissés, seule la première commande exécuter à distance et tout le reste sera exécuté sur la machine locale.

20
répondu Jon Ericson 2017-05-23 12:25:57

vous pouvez utiliser expect pour remplir la commande nom d'utilisateur/mot de passe.

0
répondu Iker Jimenez 2015-09-22 11:19:28

vous devez mettre votre clé publique SSH dans le fichier ~/.ssh/authorized_keys sur l'hôte distant. Ensuite, vous serez en mesure de SSH à cet hôte sans mot de passe.

vous pouvez aussi utiliser ssh-agent . Je déconseille de stocker le mot de passe dans le script.

0
répondu Steve M 2015-09-22 11:20:46

la façon La plus simple est d'utiliser un certificat pour l'utilisateur qui exécute le script.

un plus complexe implique d'ajouter à stdin le mot de passe lorsque la commande shell le demande. Attendez-vous, bibliothèques perl, montrer à l'utilisateur l'invite demander le mot de passe (si est interactif, au moins), il ya beaucoup de choix.

-2
répondu gmuslera 2008-08-26 22:26:43