Question

Lorsque j'essaie d'utiliser un ssh commande dans un script shell, la commande se trouve juste là.Avez-vous un exemple de comment l'utiliser ssh dans un script shell?

Était-ce utile?

La solution

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

ssh user@host command

par exemple

ssh user@host ls

Pour ce faire, en toute sécurité, vous devez demander à l'utilisateur le mot de passe lors de l'exécution, ou de configurer les touches sur l'hôte distant.

Autres conseils

Tout d'abord, vous devez vous assurer que vous avez mis en place sans mot de passe (clé publique de connexion).Il y a au moins deux versions de ssh légèrement différents formats de fichiers de configuration.De vérifier la ssh man sur votre système, consultez votre administrateur système ou sur la tête de Comment le programme d'installation de la Clé Publique d'Authentification?.

Pour exécuter ssh en mode batch (par exemple au sein d'un script shell), vous devez passer une commande que vous souhaitez exécuter.La syntaxe est la suivante:

ssh host command

Si vous souhaitez exécuter plusieurs commandes en même temps, utilisez des guillemets et des points-virgules:

ssh host "command1; command2"

Les guillemets sont nécessaires pour protéger les points-virgules à partir du shell interprète.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.

Vous pouvez utiliser expect commande à remplir le nom d'utilisateur/mot de passe info.

Vous avez besoin de mettre votre clé publique SSH dans le ~/.ssh/authorized_keys fichier sur l'hôte distant.Ensuite, vous serez en mesure de SSH pour que l'hôte sans mot de passe.

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

Le plus simple est d'utiliser un certificat pour l'utilisateur qui exécute le script.

De plus en plus complexe l'un implique l'ajout de stdin le mot de passe lorsque la ligne de commande à la demande.Attendre, perl bibliothèques, montrer à l'utilisateur à l'invite demandant le mot de passe (si elle est interactive, au moins), il y a beaucoup de choix.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top