我想更改我的服务器上的密码。
在服务器上更改密码时应接受四种可能的密码。
为了实现这一目标,我想编写一个“期望”脚本,该脚本登录到我的服务器并执行某些操作。但我不知道设备正在使用哪个密码,但我知道它是四个可能的密码之一。
因此,我的脚本需要依次尝试所有四个密码。这意味着如果第一个密码失败,脚本应尝试第二个密码。如果再次失败,则应尝试第三次。如果失败,则应尝试第四个密码。
这是我到目前为止的代码:
spawn telnet my_host
expect UserName {send admin\r}
expect PassWord [one of array passwords\r]
{if auth ok}
do something
{else}
try another password
expect -re #
send "logout\r"
expect eof
你能帮助我实现上述目标吗?
答案1
也许是这样的:
spawn telnet my_host
expect UserName
send "admin\r"
set passwords [list foo bar baz]
set connected false
foreach pw $passwords {
expect PassWord
send -- "$pw\r"
# change the "invalid password" pattern to whatever you need it to be.
expect {
"invalid password" {continue}
-re "#" {
set connected true
break
}
}
}
if {! $connected} {
error "no password succeeded"
}
send "logout\r"
expect eof