save espera buffer fora do escopo?

1

No meu script de espera, estou usando exp_continue para enviar a barra de espaço até obter um prompt diferente, mas parece que a maneira como estou fazendo isso pode estar colocando o $expect_out(buffer) fora do escopo do meu script. / p>

O script é

#!/usr/bin/expect -f

# Set variables
set timeout 300
set SWITCH [lindex $argv 0]

# Its busy time
spawn ssh -o "StrictHostKeyChecking no" $SWITCH -luser
match_max 100000000
expect {
    "*assword:"
}
send "password\r"
expect "*>"
send "show run\r"
expect {
    "*More*" {send -- " ";exp_continue}
    "*>" {send -- "exit\r"}
}
set fid [open $SWITCH.conf w+]
set out $expect_out(buffer)
puts $fid $out

e a saída para o meu shell mostra a saída completa (o que eu esperaria ser gravado no arquivo, abaixo é recortado)

    no telnet server
    username admin password .....
    username user privilege 5 password .....
    !
    !
    hitless-failover enable
    !
    end

    SSH@TELCO-STACK>

no entanto, o arquivo que é gravado a partir da linha puts contém apenas o seguinte

^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H
!^M
!^M
!^M
end^M
^M
SSH@TELCO-STACK>

por que apenas o ^ H e as últimas linhas de saída estão sendo gravadas no arquivo, quando vejo a saída inteira (correta) para stdout?

    
por Party Time 12.10.2016 / 19:32

1 resposta

3

A página man do expect diz:

Upon matching a pattern (or eof or full_buffer), any matching and previously unmatched output is saved in the variable expect_out(buffer).

Isso significa que você só receberá os caracteres desde o último "Mais" .

Suspeito que você queira o comando log_file :

#!/usr/bin/expect -f
set timeout 300
set SWITCH [lindex $argv 0]
spawn ssh -o "StrictHostKeyChecking no" $SWITCH -luser
match_max 100000000
expect "*assword:"
send "password\r"
expect "*>"

log_file /some/log/file

send "show run\r"
expect {
    "*More*" {send -- " ";exp_continue}
    "*>" {send -- "exit\r"}
}
    
por 12.10.2016 / 20:07