我是一个新手期望(很多的shell编程虽然)。 我试图连接到交换机使用期望能够转储它的运行配置。但不知何故我的发送命令似乎没有发送到交换机。使用SSH和期望连接到交换机
脚本:
#!/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 [email protected]$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脚本触发),我可以看到它登录到交换机上,看到了“提示”,但在此之后脚本似乎已退出,因为我没有看到正在执行的'enable'和'show running'命令。
任何人都可以告诉我如何解决这个问题?
Richard。
不是一个答案(因此评论),但你可能想看看如何腐臭(http://www.shrubbery.net/rancid/)做到这一点。 – abligh 2014-10-17 12:24:59