我正在尝试使用expect通过telnet自动与远程设备进行交互。 在某些时候,设备会生成如下输出:
;
...
COMPLETED
...
;
我需要的是让我的脚本在“COMPLETED”关键字和第二个“;”之后退出被发现。但是我的所有人都失败了。脚本要么在第一次昏迷后退出,要么根本不退出,悬挂。请帮忙。
答案 0 :(得分:2)
期待有效。
我指出了这一点,因为 facha 已经写过“那个(可能是更新的脚本,而不是Expect本身)不能正常工作”一次。期望很少有错误 - 但对于大多数程序员和管理员来说,它是如此陌生,以至于很难辨别出如何与之交谈。格伦对
的建议expect -re {COMPLETE.+;}
和
exp_internal 1
(或命令行上的 -d 等等)完全符合目标:从我所知道的一切来看,这些正是在这种情况下采取的前两个步骤。
我会稍微猜测一下:从目前为止提供的证据来看,我想知道期望匹配是否真正进入COMPLETE段。此外,请注意,如果一个人正在远程登录的设备足够松散,即使看起来像“COMPLETE”那样无辜的东西也可能实际上嵌入了控制字符。在这种情况下,您唯一的希望是采用exp_internal或autoexpect之类的调试技术。
答案 1 :(得分:1)
如何:expect -re {COMPLETED.+;}