Поэтому я пытаюсь использовать функцию ожидаемого для автоматизации резервного копирования работающей конфигурации некоторых коммутаторов в нашей сети. Проблема, с которой я сталкиваюсь, заключается в изменении части моих команд отправки, и я не знаю, как это исправить.
Например, я использую то, что ниже.
#/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"
, и я в растерянности относительно того, как это называется (чтобы найти, как это исправить).
Кто-нибудь может помочь с указанием меня в правильном направлении?
Tcl использует \
, символ для выхода из вещей, как Вы использовал \r
для новой строки. Если Вы хотите отправить сингл \
Вы или должны выйти из него с другим \
, таким образом, это становится \\
, или Вы выходите из строки с фигурными скобками {}
, который предотвратит такие специальные Escape. Ваши опции поэтому:
send "copy running-config flash:\\\\startup-config"
или
send {copy running-config flash:\\startup-config}