0

我有以下脚本。有时,它运行良好,而另一些则卡住。这里有什么问题?

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

1 回答 1

1

我会做的事情:

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

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

您确定密码提示后面有一个额外的字符(您的?in expect "password:?"。它总是在那里吗?不同设备的密码提示是否可能略有不同?

于 2013-11-12T02:19:57.937 回答