Comment utiliser ssh dans un script shell?
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?
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.