If statement 如果密码为其他用户/密码,则需要脚本
我的情况是,我必须对一些交换机进行配置。 交换机上的身份验证是通过密码和用户/密码进行的 我似乎找不到一个expect脚本,该脚本只使用密码检查登录,如果失败,则尝试使用用户和密码 应该是这样的: 远程登录到主机 如果密码正确,则执行备份命令 否则发送用户和密码并执行备份命令If statement 如果密码为其他用户/密码,则需要脚本,if-statement,telnet,expect,If Statement,Telnet,Expect,我的情况是,我必须对一些交换机进行配置。 交换机上的身份验证是通过密码和用户/密码进行的 我似乎找不到一个expect脚本,该脚本只使用密码检查登录,如果失败,则尝试使用用户和密码 应该是这样的: 远程登录到主机 如果密码正确,则执行备份命令 否则发送用户和密码并执行备份命令 #!/usr/bin/expect spawn telnet 172.21.146.22 sleep 1 send "\x19" sleep 1 expect { "Password:" { send "p
#!/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
}
}
这里需要的是
exp\u continue
,它基本上支持expect语句中的“循环”
#!/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"
#/usr/bin/expect
繁殖telnet 172.21.146.22
睡眠1
发送“\x19”
睡眠1
expect{{{}这是我的脚本的外观:{usr/bin/expect spawn telnet主机sleep 1 expect“#”sleep 1 send”\x19“sleep 1 expect”*“sleep 1 send”\t\t“sleep 1 expect{”Password:{send”pass\r“interact}”Username:{send”admin\r“sleep 1 expect”pass:“send”pass\r”interact}编辑您的问题以将代码放在那里。您无法在注释中正确设置代码格式。另外,向我们展示手动登录的外观。从终端剪切并粘贴这是ogin如何查找带有密码的设备:这是使用用户名和密码的设备的登录:可能将提示更改为“输入密码:”和“输入用户名”-界面使用类似于curses库的东西来呈现屏幕,因此您可能需要sleep 1
来给光标进入输入字段的时间。此外,选择与“Ethernet”不同的东西来表示成功登录:该词出现在两个登录屏幕上。