调试模式与控制输出:探索Expect脚本的高级技巧
1. 模式调试
在编写模式时,有几个关键要点需要注意。首先,要清楚构建模式的规则;其次,理解在Tel中表达模式的规则;最后,要明确预期字符串中的字符。任何一个步骤的误解都可能导致编写的模式无法匹配。
当模式未能按预期匹配时,脚本执行速度通常会变得非常缓慢。例如,以下登录脚本片段本应快速执行:
expect "Login: "
send "don\r"
expect "Password: "
send "swordfish\r"
但在典型系统上,该片段可能需要20秒才能执行完毕,而非1 - 2秒。这里存在两个问题:
- 模式大小写问题 :第一个模式期望的是 “Login: “,但在典型的UNIX系统中,登录提示是 “login: “,脚本会等待10秒(默认超时时间),超时后 expect 命令返回,用户不会收到模式匹配失败的通知。
- 模式空格问题 :”Password: ” 模式末尾有一个空格字符,但实际收到的提示是 “Password:”,没有末尾空格。同样,脚本会等待10秒。
为了找出问题所在,可以使用 exp_internal 1 命令让Expect打印内部操作的诊断信息。以下是使用该命令的脚本:
spawn telnet uunet.uu.net
exp_internal 1
ex
超级会员免费看
订阅专栏 解锁全文
640

被折叠的 条评论
为什么被折叠?



