【问题标题】:How can I scroll the terminal output with Expect Script?如何使用 Expect Script 滚动终端输出?
【发布时间】:2015-08-10 13:45:42
【问题描述】:

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

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

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

  • 按空格键显示额外的输出屏幕。

  • 按 Enter 以显示多行输出。

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

提前致谢,

!/usr/bin/expect

生成 telnet 192.168.0.1
期望“用户名:”
发送“我的用户名\r”
期待“assword:”
发送“我的密码\r”
发送“显示 ip int br\r”
交互超时 5
发送——“退出\r”

【问题讨论】:

  • 这意味着您想通过 bash 访问您的 cisco 路由器或交换机,然后添加一些命令然后退出会话,不是吗?

标签: linux remote-access telnet


【解决方案1】:

如果您使用的是 Cisco 终端(看起来就是这样),您可以将终端长度设置为零(通过发送“term len 0”),因为 0 表示“没有暂停”。这是避免期望脚本在处理分页输出时不得不做“额外工作”的最佳方法。

否则你可以这样做:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-07-31
      • 2014-07-24
      • 2015-03-09
      • 1970-01-01
      • 2012-07-23
      • 1970-01-01
      • 2019-12-29
      • 2017-01-30
      • 2015-08-04
      相关资源
      最近更新 更多