2012-11-01 5 views
1

Je suis nouveau pour les scripts shell, et j'ai centos en cours d'exécution. Je veux écrire un script shell ssh une machine distante et exécuter un tas de commandes. Le problème auquel je suis confronté est de savoir comment fournir le nom d'utilisateur, le mot de passe, l'adresse de la machine distante et la clé d'accès privée à une commande qui doit connecter la machine distante.Script shell pour SSH à distance

J'ai fait des recherches sur Google et trouvé des scripts, mais tous ont besoin d'un utilitaire appelé expect, et je ne veux installer aucun utilitaire, uniquement pour exécuter mon script. Y a-t-il un moyen de faire cela?

+5

Vous pouvez vous connecter automatiquement en utilisant une [clé publique] (http://www.ece.uci.edu/~chou/ssh-key.html). – Yamaneko

+0

ssh public keys est la façon "correcte" de faire cela comme Victor Hugo l'a déjà suggéré. Cela mis à part: s'attendre à un utilitaire assez vieux, populaire et bien établi, y at-il des raisons pour lesquelles vous ne voulez pas l'installer? –

+0

oui cuz d'un seul script ne veut pas installer un utilitaire. Je vais devoir convaincre les gars du réseau pour cela. –

Répondre

2

Vous pouvez passer tout ce que vous avez besoin dans un appel ssh, procédez comme suit:

ssh -i private_key_path [email protected]_machine "command" 

Si vous allez utiliser cette connexion plusieurs fois, et que vous souhaitez maintenir configuré, ajoutez les lignes suivantes vous .ssh/config fichier:

Host host_alias 
    User user_name 
    HostName remote_machine 
    IdentityFile private_key_path 

, puis accéder à la machine à distance, et exécutez la commande que vous voulez, en faisant:

ssh host_alias "command" 

Notez que la commande AFAIK doit être comprise entre guillemets, car elle doit être considérée comme un argument par ssh.