期待脚本如果密码别用户/密码

时间:2015-09-23 13:24:21

标签: if-statement telnet expect

我的情况是我必须对某些交换机的配置进行配置。 交换机上的身份验证是通过密码和用户/密码

我似乎无法找到一个只用密码检查登录的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
            }
}

1 个答案:

答案 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;