Nic*_*reu 2 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]
有没有一种方法可以关闭分页,或者在尝试将信息转储到命令行以将其关闭之前可以发送命令?
在 Linux 中:
您可以使用重定向来跳过寻呼机(more或less)。如果在屏幕上显示输出很重要,则可以将输出重定向到tee.
例如man ls; ls,在 中,man命令期望用户按下q终止键,然后ls执行。要在无需用户干预的情况下同时执行这两个命令,可以将其作为 完成man ls | tee; ls。如果不强制显示输出,也可以将其重定向到/dev/null。
如需其他帮助,请指定您尝试在远程服务器上执行的确切命令。
在 Python 中:使用 时pexpect,如果提前知道中间输出,则可以自动化用户活动。您可以使用expect函数等待特定输出,然后采取必要的操作(例如使用sendLine)。