如何使用Expect Script滚动终端输出?

时间:2015-05-28 07:31:36

标签: linux telnet remote-access expect spacebars

我试图提出一个简单的期望脚本,允许我登录系统并运行一个命令......这样的事情:

我遇到的问题是单个show命令的输出溢出,显示屏后面是--More--提示符。在--More--提示符下,您有以下选项:

  • 按Ctrl + C,q或Q中断输出并返回命令提示符。

  • 按空格键可显示另一个输出屏幕。

  • 按Enter键再显示一行输出。

我最终想要的是记录show命令的所有输出,但我的脚本在第一个--More--提示符处超时。每次获得--More--提示时,如何让脚本发送新的行字符(即空格键)?

提前致谢,

!在/ usr / bin中/期望

产生telnet 192.168.0.1
期待"用户名:"
发送" MyUsername \ r"
期待" assword:"
发送" MyPassword \ r"
发送" show ip int br \ r"
互动超时5
发送 - "退出\ r"

2 个答案:

答案 0 :(得分:3)

如果您正在处理思科终端(如您所见),您可以将终端长度设置为零(通过发送"术语len 0"),因为0意味着&# 34;没有暂停"。这是避免期望脚本不得不做额外工作的最佳方法。处理分页输出。

否则你可以这样做:

 expect {
   -ex "--More--" { send -- " "; exp_continue }
   "*#" { send "exit\r" }
 }

" -ex"是为了避免期待思考" - 更多 - "是一个标志,因为它以连字符开头。在匹配时,您发送一个空格来滚动另一个屏幕,并继续等待,直到您返回到提示符(例如exec提示符),然后退出。

答案 1 :(得分:0)

我使用了终端更多关闭选项,该选项禁用了more功能。