【发布时间】:2014-06-08 06:26:06
【问题描述】:
我在 stackoverflow 上进行了搜索,但还没有真正找到答案。
我对脚本很陌生,我已经创建了一个功能齐全的 Expect 脚本,但我想对其进行一些改进。目前,我为主机地址、用户名和密码创建了 3 个 argv 0、1 和 2 的 lindex 值。
如果未指定 argv 1 和 2,我想创建一个默认用户名和密码。我尝试通过一些 if 语句来解决这个问题,但在通过 stackoverflow 搜索后,似乎 TCL/Expect 不支持 NULL 或空值。相反,您必须对其进行查询。目前我的代码如下所示:
#!/usr/bin/expect
#Variables
set HOSTADDRESS [lindex $argv 0]
set USER [lindex $argv 1]
set PASSWORD [lindex $argv 2]
spawn ssh $USER@$HOSTADDRESS
set timeout 100
expect {
"(yes/no)?" {send "yes\n"; exp_continue}
"assword:" {send "$PASSWORD\n"}
}
expect {
"%" {send "cli\r"; exp_continue}
">" {sleep 1}
}
send "show interfaces st0 terse | match st0. | count \r"
expect "Count:???"
puts [open $HOSTADDRESS.op5.vpn.results w] $expect_out(0,string)
expect ">"
send "exit\r"
expect {
"%" {send "exit\r"; exp_continue}
"closed." {exit}
}
exit
如果没有在 argv 1 或 argv2 中指定,你们能否帮我为 $USER 和 $PASSWORD 创建一个默认变量?
【问题讨论】: