我的情况是我必须对某些交换机的配置进行配置。 交换机上的身份验证是通过密码和用户/密码
我似乎无法找到一个只用密码检查登录的expect脚本,如果失败则尝试用户和密码。
它应该是这样的: telnet到主机 如果密码正常,则执行backup命令 否则发送用户和密码并执行备份命令
#!/usr/bin/expect
spawn telnet 172.21.146.22
sleep 1
send "\x19"
sleep 1
expect
{
"Password:" {
send "pass\r"
interact
}
"Username:" {
send "admin\r"
sleep 1
expect "Password:"
send "pass\r"
interact
}
}
答案 0 :(得分:0)
这里你需要的是exp_continue
,它基本上可以启用"循环"在期望陈述中
#!/usr/bin/expect
spawn telnet 172.21.146.22
sleep 1
send "\x19"
sleep 1
expect { # <-- open braces *must* be on same line as command.
"Password:" {
send "pass\r"
exp_continue
}
"Username:" {
send "admin\r"
exp_continue
}
timeout {
error "timed out before successful login"
}
"some_string_you_see_when_you_have_logged_in_successfully"
}
send "your backup command\r"
如果在您登录时,您首先看到密码提示,您将发送该密码但保留在expect命令中,直到看到其他模式。如果是&#34;用户名&#34;,那么您将发送用户名,然后等待直到看到密码提示。如果第一个密码成功,那么您需要查找&#34; some_string_you_see_when_you_have_logged_in_successfully&#34;