Esperar script alterando envio de “\\” para apenas “\”

3

Portanto, estou tentando usar o recurso para automatizar o backup da configuração em execução de alguns switches em nossa rede. O problema que estou correndo é mudar uma parte dos meus comandos de envio e eu não sei como consertar isso.

Por exemplo, estou usando o que está abaixo.

#/usr/bin/expect

spawn /usr/bin/plink -ssh x.x.x.x

expect -exact "User Name:"

send "USERNAME\r"

expect -exact "Password:"

send "PASSWORD\r"

send "copy running-config flash:\startup-config"

expect "Overwrite file [startup-config] ?[Yes/Press any key for no]"

send "y\r"

expect "Copy succeeded"

send "exit/r"

expect "eof"

mas acaba atrapalhando com "flash:\startup-config" , em vez de enviar "flash:\startup-config" , e eu não entendo como isso é chamado (para pesquisar como corrigi-lo).

Alguém é capaz de me ajudar na direção certa?

    
por GTerry 23.03.2016 / 17:30

1 resposta

1

O Tcl usa o caractere \ para escapar de coisas, como você usou \r para a nova linha. Se você quiser enviar um único \ você tem que escapar com outro \ , então ele se torna \ ou você escapa da string com chaves {} , o que impedirá tais escapes especiais. Suas opções são, portanto:

send "copy running-config flash:\\startup-config"

ou

send {copy running-config flash:\startup-config}
    
por Johannes Kuhn 24.03.2016 / 14:04

Tags