我有以下脚本。有时,它运行良好,而其他一些卡住。这可能有什么问题?
#!/usr/bin/env expect
# set Variables
set timeout 60
set ipaddr [lindex $argv 0]
# start telnet connection
spawn telnet $ipaddr
match_max 100000
# Look for user prompt
expect "username:*"
send -- "admin\r"
expect "password:?"
# Send pass
send "thisisthepass\n"
# look for WWP prompt
expect ">"
send "sendthiscommand\r"
expect ">"
send "exit\r"
interact
脚本运行良好直到最后,但有时它会在登录期间卡住。即使使用相同的IP,也会出现此行为:例如,对于同一IP,它可能会运行5次尝试中的1次。
我尝试在发送用户和密码之间添加一些睡眠,但它仍然是相同的。我也试过没试过,通过直接发送用户之后的密码字符串,但仍然是相同的:有时脚本运行正常,但其他人再次询问密码,好像它是不正确的......
username: admin
password:
username:
答案 0 :(得分:1)
我会做的事情:
send "thisisthepass\n"
更改为send "thisisthepass\r"
exp_internal 1
,并查看尝试失败时发生的情况 exp_internal 1
将启用调试,其中包含有关期望模式匹配的大量有用信息。你可以在这里分享,我很乐意看看它。
你确定密码提示后面有一个额外的字符(你?
中的expect "password:?"
。它是否一直存在?有不同设备的密码提示略有不同吗?