Commande Expect

Résolu
Maillon Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   -  
Maillon Messages postés 156 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   5
 
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   Statut Membre Dernière intervention   5
 
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