期望脚本将“\\”的发送更改为“\”

期望脚本将“\\”的发送更改为“\”

因此,我尝试使用 expect 自动备份我们网络上某些交换机的运行配置。我遇到的问题是它更改了我发送命令的一部分,但我不知道如何修复它。

例如我正在使用下面的内容。

#/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"

但最终却搞砸了"flash:\\startup-config"发送"flash:\startup-config",我不知道这叫什么(为了寻找如何修复它)。

有人能帮我指明正确的方向吗?

答案1

Tcl 使用\字符来转义内容,就像您用于\r换行符一样。如果您要发送单个字符,\则必须使用 other 对其进行转义\,因此它变成\\或者使用括号对字符串进行转义{},这将阻止此类特殊转义。因此,您的选择是:

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

或者

send {copy running-config flash:\\startup-config}

相关内容