Bon, j'ai fait quelques test plus concrets et pas confidentiel cette fois : sur un boitier JetDirect.
Je pense que j'ai identifié un des problèmes : mon prompt ou mon more sont détectés ailleurs que là ou ils devraient se trouver, du coup les commandes après la boucle for sont exécutées mais pas au bon endroit (enfin, je pense il faudra que je vérifie ça au taf demain).
Bon, ça c'est donc une piste à suivre pour moi.
Pour palier à ça, je me suis dit "facile" je défini mon prompt autrement. Celui-ci démarre en début de ligne, c'est donc facile. Exemple avec le script de test sur mon JetDirect : #!/usr/bin/expect -f
set PROMPT "^>"
set VERSION 10
set timeout 10
log_file -a log.txt
spawn telnet 192.168.1.4
expect -re "$PROMPT"
send "\?\r"
for {set i 1} {$i<=5} {incr i 1} {
expect -re "$PROMPT"
switch $VERSION {
10 {send "\?\r"}
09 {send "/\r"}
}
}
expect -re "$PROMPT"
send "/\r"
expect -re "$PROMPT"
send "exit\r"
exit
Et là, grosse blague, le prompt n'est pas détecté, j'ai droit au timeout à chaque commande (le script s'exécute mais sans détecter le prompt).
Pourquoi ne le détecte-t-il pas ?
Comme j'ai fait un fichier de log, j'ai pu constater qu'à chaque fin de ligne j'ai des "^M". En sont-ils la cause ? Si oui, comment les supprimer ?
[^] # Re: Précisions
Posté par mekare . En réponse au message Expect : sortie du script non désirée. Évalué à 1.
Bon, j'ai fait quelques test plus concrets et pas confidentiel cette fois : sur un boitier JetDirect.
Je pense que j'ai identifié un des problèmes : mon prompt ou mon more sont détectés ailleurs que là ou ils devraient se trouver, du coup les commandes après la boucle for sont exécutées mais pas au bon endroit (enfin, je pense il faudra que je vérifie ça au taf demain).
Bon, ça c'est donc une piste à suivre pour moi.
Pour palier à ça, je me suis dit "facile" je défini mon prompt autrement. Celui-ci démarre en début de ligne, c'est donc facile. Exemple avec le script de test sur mon JetDirect :
#!/usr/bin/expect -fset PROMPT "^>"
set VERSION 10
set timeout 10
log_file -a log.txt
spawn telnet 192.168.1.4
expect -re "$PROMPT"
send "\?\r"
for {set i 1} {$i<=5} {incr i 1} {
expect -re "$PROMPT"
switch $VERSION {
10 {send "\?\r"}
09 {send "/\r"}
}
}
expect -re "$PROMPT"
send "/\r"
expect -re "$PROMPT"
send "exit\r"
exit
Et là, grosse blague, le prompt n'est pas détecté, j'ai droit au timeout à chaque commande (le script s'exécute mais sans détecter le prompt).
Pourquoi ne le détecte-t-il pas ?
Comme j'ai fait un fichier de log, j'ai pu constater qu'à chaque fin de ligne j'ai des "^M". En sont-ils la cause ? Si oui, comment les supprimer ?