在命令行上禁用分页

时间:2015-07-01 20:33:47

标签: linux pagination pexpect

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

例如,您可以使用以下内容:

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

child.sendLine('ls -al')

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

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

例如:

[Some info]

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

[Some more info]

在尝试将信息转储到命令行以关闭之前,有没有办法可以关闭分页或我可以发送的命令?

1 个答案:

答案 0 :(得分:2)

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

例如,在man ls; ls中,man命令要求用户按q进行终止,然后执行ls。要在没有用户干预的情况下同时执行这两个命令,可以将其作为man ls | tee; ls来完成。如果显示输出不是必需的,也可以将其重定向到/dev/null

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

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