在登录期间,Expect有时会卡住

时间:2013-11-11 23:29:52

标签: login expect

我有以下脚本。有时,它运行良好,而其他一些卡住。这可能有什么问题?

#!/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:

1 个答案:

答案 0 :(得分:1)

我会做的事情:

  • send "thisisthepass\n"更改为send "thisisthepass\r"
  • 在脚本顶部的某处包含exp_internal 1,并查看尝试失败时发生的情况

exp_internal 1将启用调试,其中包含有关期望模式匹配的大量有用信息。你可以在这里分享,我很乐意看看它。

你确定密码提示后面有一个额外的字符(你?中的expect "password:?"。它是否一直存在?有不同设备的密码提示略有不同吗?