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

How can I scroll the terminal output with Expect Script?

我正在尝试想出一个简单的 expect 脚本,它允许我登录到一个系统和 运行 一个命令......像这样:

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

最后我想要的是记录 show 命令的所有输出,但我的脚本在第一个 --More-- 提示符处超时。如何让脚本在每次收到 --More-- 提示时发送换行符(即 spacebar)?

提前致谢,

!/usr/bin/expect

生成远程登录 192.168.0.1
期望“用户名:”
发送“MyUsername\r”
期待“密码:”
发送“MyPassword\r”
发送“show ip int br\r”
交互超时 5
发送——“退出\r”

如果您正在处理 Cisco 终端(看起来像您),您可以将终端长度设置为零(通过发送 "term len 0"),因为 0 表示 "no pausing"。这是避免 expect 脚本在处​​理分页输出时必须执行 "extra work" 的最佳方法。

否则你可以这样做:

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

“-ex”是为了避免 expect 认为“--More--”是一个标志,因为它以连字符开头。匹配时,您发送 space 以滚动另一个屏幕,并继续等待直到返回提示(例如 exec 提示),然后退出。

我使用了 terminal more off 选项,它禁用了 more 功能。