当channel.recv读取设备回显信息的时候,有些命令可能会等待很长时间,而有些命令则不需要等待时间,通常我们的做法是通过sleep方法来让程序自行等待一定时间,我也用同样的方法来做同样的事情,那么我们的问题就是既能够读取完整的回显,又能够解决程序执行所有命令都长时间等待问题。
我先分析一下:
我们希望能够读取完整的回显,同时又能解决程序长时间等待问题,那么我们可以让关键命令执行等待长时间,非关键命令执行等待短时间,比如遇到有commit命令的脚本,如果脚本比较长,则让commit等待1秒即可,后续的检查命令可以单独执行。主备防火墙的save命令可以对之后的‘y’确认命令做条件判断,如果有字符‘y'且命令长度小于3,则可执行长时间等待。如此可以总结为:
1、关键命令执行长时间等待
2、非关键命令执行短时间等待
3、建议长等待时间设计成手动输入
除上述方案,还有一种方法就是:可以由命令执行者自定义每条命令等待时间,但不建议,因为脚本如果为txt文本,则会比较繁琐,如果为excel格式,则相对比较方便。
如上方法思路,仅供参考,如有不足,烦请留言指出。