2016-08-12 2 views
3

J'écris un script shell pour se connecter à une machine distante basée sur Linux en utilisant sshComment utiliser ssh pour exécuter des actions qui sont clavier interactif en fournissant du texte statique

Une fois connecté à la machine distante je suis capable d'exécuter des commandes Linux, maintenant le vrai problème auquel je suis confronté est lorsque vous essayez d'exécuter le même script pour une autre machine distante qui demandera une authentification locale (username et password) sur ssh connectez-vous pour aller plus loin.

Quelqu'un peut-il me guider sur la façon de remplir la première ligne avec mon username et immédiatement faire un retour chariot et effectuer une action similaire pour password.

J'ai essayé le code ci-dessous connect.sh

sshpass -p <remote-passwd> ssh [email protected]<remote-ip> 'bash -s' < test.sh 

test.sh contiennent

ls 
pwd 

Si j'exécuter le script connect.sh il exécute parfaitement sans demander le mot de passe de la machine à distance. Il exécute également ls et pwd

Puis-je remplacer réellement ls et pwd avec mon username et password pour obtenir ce que je suis en train de faire ??

Aussi, est-ce que je regarde quelque chose qui n'est pas possible ?? (Je l'ai vu un code similaire dans VB.NET qui résout mon but, mais il est pas un code robuste et je ne pas avoir une idée sur VB scripts)

Mise à jour: Je suis capable de se connecter à machine distante non interactivement, mais l'environnement de la machine distante demande immédiatement une authentification locale qui nécessite à nouveau une interaction au clavier, je cherche à réaliser cette authentification de manière non interactive

+0

se connecter automatiquement sur SSH est en effet possible, vérifier http://stackoverflow.com/questions/12202587/automatically-enter-ssh-password-with-script – bdvll

+0

Voir aussi [** écrire un script shell à ssh à un machine distante et exécuter des commandes **] (http://stackoverflow.com/questions/13928116/write-a-shell-script-to-ssh-to-a-remote-machine-and-execute-commands) .Pour plus de détails Pour configurer l'accès * sans mot de passe *, voir: [** Comment configurer l'authentification sans mots de passe entre deux comptes différents **] (http://stackoverflow.com/questions/36171227/how-to-setup-the-passwords -less-authentication-between-two-different-accounts/36172337? s = 1 | 0.4287 # 36172337). –

+0

@bdvll Je suis d'accord avec cette partie du problème, mon problème est après avoir atteint ce ... – prince

Répondre

0

Si possible, vous devez configurer une clé publique sur le serveur de sorte que vous n'avez pas à fournir un mot de passe. Ceci est plus sûr et résoudra votre problème plus directement.

Vous pouvez également vous intéresser aux frameworks d'orchestration plutôt que de tout mettre en œuvre vous-même. Si vous faites de petites choses, Fabric est une bonne option. Si cela ressemble à quelque chose de beaucoup plus grand, vous devriez regarder quelque chose comme Ansible, qui peut également gérer la configuration du système et un million d'autres choses, mais nécessite très peu de configuration pour commencer.

+0

Merci @Xiong, vérifiera les entrées que vous avez données. Merci. – prince