Bonjour à tous,
J'ai des petits soucis avec expect. Voilà, je veux automatiser du rapatriement de données via ssh sur une machine distance. J'ai donc essayé un petit script expect, que voilà :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
#!/usr/bin/expect -f
set login [lrange $argv 0 0]
set password [lrange $argv 1 1]
set ipaddr [lrange $argv 2 2]
 
set timeout -1
spawn ssh $login@$ipaddr 
match_max 100000
expect "*?assword:*"
send -- "$password\r"
expect "*?kraken:~$"
send -- "\r"
send -- "cd tests\r"
send -- "tar -czvf resultats.tar.gz resultats\r"
send -- "exit\r"
expect eof
Ce qui me permet de préparer le transfert proprement dit. Mais le problème c'est que lorsque je rajoute des commandes après, "spawn scp " par exemple, le début du script ne marche plus ! Il reste coincé sur la machine distante et n'arrive pas à exécuter les commandes suivantes.
J'ai exactement le même problème quand j'essaie d'intégrer le script ci-dessus (même sans les ajouts ultérieurs) au sein d'un script bash, comme ceci par exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
#!/bin/bash
/usr/bin/expect - << EndMark
(code ci-dessus)
EndMark
Si vous vous demandez pourquoi j'ai rajouté le "expect kraken", où kraken est le nom de la machine distante, c'est parce que sinon il n'arrivait pas du tout à exécuter de commandes distantes sur la machine.
Voilà, désolé si cette question est une question de noob :s et merci d'avance.