Commande Expect

Résolu/Fermé
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 - 25 mars 2009 à 12:39
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 - 25 mars 2009 à 14:29
Bonjour,

Voilà j'avais ouvert un topic ici :
http://www.commentcamarche.net/forum/affich 11571164 perl commande root sur machine distante?#3

seulement je pense qu'il est maintenant plus préférable de mettre le sujet dans cette section.

En résumé j'ai ça :

#!/usr/bin/expect -f

set host [lindex $argv 0]
set id [lindex $argv 1]

set prompt ">>> ";
set force_conservative 1;

set timeout 3
spawn ssh $host
expect "$prompt"
send "sudo su -\r"
expect "Password: $"
send "motdepasse\r"
expect "$prompt"
send -- "sh /tmp/test.sh\r"
send -- "exit\r"
send -- "exit\r"
interact

En fait je connecte à la machine $host, puis je me loggue en root puis je lance un script (test.sh) qui est un script d'affichage (qui prend plus ou moins de temps).

Ca marche par contre il m'affiche ça à la fin de l'execution
[root@host] # sh /tmp/test.sh
exit
exit
AFFICHAGE DE MON SCRIPT
[root@host] # bash-2.05$ exit
logout
Connection to host closed.

J'ai une question : Pourquoi il y a un exit d'abord puis un affichage du script après ?

Merci de votre aide ;-)

Cordialement,
A voir également:

2 réponses

Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 5
25 mars 2009 à 12:51
Et j'aimerai aussi au cas où mon script soit long, sortir de ma connexion ssh mais seulement une fois que l'exécution de mon script test.sh est terminé mais je sais pas si c'est possible.

Cela dans le cas où j'ai d'autres scripts qui se lancent après la fin d'exécution du test.sh.
0
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 5
25 mars 2009 à 14:29
Bon si ça intéresse quelqu'un je crois que j'ai trouvé.
j'ai mis ça :

#!/usr/bin/expect -f

set host [lindex $argv 0]
set id [lindex $argv 1]

set prompt ">>> ";
set force_conservative 1;

set timeout 3
spawn ssh $host
expect "$prompt"
send "sudo su -\r"
expect "Password: $"
send "motdepasse\r"
expect "$prompt"
send -- "sh /tmp/test.sh recip=$id\r"
expect eof
send logout
send logout

Par contre si vous avez des remarques ou des suggestions je suis preneur ! lol :-)

expect eof sert à attendre la fin de l'execution du script (enfin d'après ce que j'ai compris :-) )
0