* Veuillez ne pas utiliser les touches SSH. Si ça te dérange, c'est comme ça que je le fais, fais comme si j'essayais de le faire à la place. :-) *Utilisation Attendez-vous à administrer des machines via SSH, mais pas toutes les tâches
J'utilise un script expect pour exécuter des commandes de routine sur un ensemble de serveurs sous mon contrôle via ssh. Le script doit exécuter un ensemble de commandes (par exemple, svn update ~/folderx \ r ") sur chacune des machines Mon script actuel fait tout ce que je veux qu'il fasse ... Parfois, il quitte la connexion ssh avant d'en terminer une des dernières commandes
Toute réflexion sur la façon dont je peux faire la connexion rester jusqu'à ce que toutes les commandes sont terminées Le code ci-dessous se connecte avec succès, exécute avec succès les deux premières commandes (ap-get mise à jour et un des mises à jour svn) et puis se déconnecte.
#!/usr/bin/expect -f
spawn ssh [email protected]
set timeout -1
expect "Are you sure you want to continue connecting" {send "yes\r"; exp_continue} "password:" {send "*******\r"; exp_continue
} "[email protected]" {send "sudo apt-get update\r"}
expect "password" {send "*******\r"; exp_continue} "[email protected]" {send "sudo svn update ~/folder1\r"}
expect "password" {send "*******\r"; exp_continue} "[email protected]" {send "sudo svn update ~/folder2\r"}
expect "password" {send "*******\r"; exp_continue} "[email protected]" {send "sudo svn update ~/folder3\r"}
expect "password" {send "*******\r"; exp_continue} "[email protected]" {send "sudo reboot\r"}
close
ne pas oublier le retour chariot après 'envoyer 'oui'' –