【发布时间】:2014-10-17 21:46:41
【问题描述】:
我是一个可以期待的新手(虽然有很多 shell 编程)。 我正在尝试使用 expect 连接到交换机,以便能够转储它正在运行的配置。但不知何故,我的发送命令似乎没有发送到交换机。
脚本:
#!/usr/bin/expect -f
proc connect {passw} {
expect {
"assword:" {
send "$passw\r"
expect {
"Prompt>" {
return 0
}
}
}
}
# timed out
return 1
}
set user [lindex $argv 0]
set passw [lindex $argv 1]
set host [lindex $argv 2]
#check if all were provided
if { $user == "" || $passw == "" || $host == "" } {
puts "Usage: <user> <passw> <host>\n"
exit 1
}
spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no $user@$host
set rez [connect $passw]
if { $rez == 0 } {
send {enable\r}
send {show running\r}
exit 0
}
puts "\nError connecting to switch: $host, user: $user!\n"
exit 1
唉,当我运行脚本(从 shell 脚本触发)时,我可以看到它登录到交换机并看到“提示”,但之后脚本似乎退出了,因为我没有看到“启用”和正在执行的“显示运行”命令。
谁能告诉我如何解决这个问题?
理查德。
【问题讨论】:
-
不是答案(因此是评论),但您可能想看看 rancid (shrubbery.net/rancid) 是如何做到这一点的。