【问题标题】:Disable pagination on the command line在命令行上禁用分页
【发布时间】:2015-07-01 20:33:47
【问题描述】:

我正在尝试使用 python 模块 pexpect 编写一个脚本,该模块将连接到服务器并执行您在命令行中键入的命令。

例如,你可以有类似的东西:

child = pexpect.spawn('/usr/bin/ssh user@example.com')

child.sendLine('ls -al')

或您要发送的任何命令。它就像您在终端中输入一样。

在我的脚本中,我尝试使用sendLine() API 运行一个命令,该API 基本上将一堆信息转储到命令行。但是有一个分页需要有另一个命令,你必须按下一个键才能继续到下一个命令。

例如:

[Some info]

--------------- To continue, press any key. To quit, press 'q'. ---------------

[Some more info]

在我尝试将信息转储到命令行以将其关闭之前,我是否可以关闭分页或发送命令?

【问题讨论】:

  • 你试过ssh -T吗?

标签: linux pagination pexpect


【解决方案1】:

在 Linux 中: 您可以使用重定向来跳过寻呼机(moreless)。如果在屏幕上显示输出很重要,可以将输出重定向到tee

例如在man ls; ls 中,man 命令希望用户按下q 以终止,然后执行ls。要在没有用户干预的情况下同时执行这两个命令,可以使用man ls | tee; ls。如果不强制显示输出,也可以重定向到/dev/null

如需更多帮助,请指定您尝试在远程服务器上执行的确切命令。

在 Python 中: 使用 pexpect 时,如果预先知道中间输出,则用户活动可以自动化。您可以使用expect 函数等待特定的输出,然后采取必要的措施(例如使用sendLine)。

【讨论】:

  • 附加| tee 正是我试图在这种情况下找到的,谢谢。不知道如何创建一个幸运的搜索查询来找到一种方法来防止停止在 sh linux 控制台中按 enter 或 q 键的命令的长输出...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-22
  • 1970-01-01
  • 2015-10-24
  • 1970-01-01
相关资源
最近更新 更多