因此,我尝试使用 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}