Bonjour,
J'ai réalisé un script Expect pour copier un fichier via sftp :
Le script fonctionne, hormis la ligne suivante :
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
18
19
20
21 #!/usr/bin/expect -f set SYSTEM [lindex $argv 0] set USER [lindex $argv 1] set PASSWORD [lindex $argv 2] spawn /usr/bin/sftp $USER@$SYSTEM expect "Are you sure you want to continue connecting (yes/no)?" send "yes \r" expect "password:" send "$PASSWORD \r" expect "sftp> " send "put resolv.conf /etc/resolv.conf \r" expect "sftp> " send "bye \r" exit 0
En effet, quand c'est la 1er fois que je me connecte sur le serveur, cette commande passe bien, mais lors d'une seconde connexion, cette commande met en erreur le script, car le système ne me renvoit pas l'instruction "Are you sure you want to continue connecting (yes/no)?" et cela fait planter ma prochaine commande :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 expect "Are you sure you want to continue connecting (yes/no)?" send "yes \r"
Comment faire pour lui dire : Si tu as l'instruction "Are you sure you want to continue connecting (yes/no)?" tu envoies la commande "Yes", sinon tu passes à la suite ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 expect "password:" send "$PASSWORD \r"
Aussi, pour cette commande :
est-il possible de lui donner une liste de 5 mots de passes différents et que si le 1er ne fonctionne pas, il essaie avec le 2eme, etc... ? Si oui, comment on fait ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 expect "password:" send "$PASSWORD \r"
Merci d'avance pour vos indications.
Arnaud
Partager