2015-07-01 26 views
0

我正在尝试使用python模块pexpect编写脚本,这些脚本将连接到服务器并执行命令,就像您在命令行中键入的一样。在命令行上禁用分页

因此,例如,你可以有这样的:

child = pexpect.spawn('/usr/bin/ssh [email protected]')

child.sendLine('ls -al')

或任何命令要发送。它会像你在终端上输入一样。

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

因此,例如:

[Some info]

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

[Some more info]

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

+1

你试过'ssh -T'吗? – jfs

回答

1

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

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

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

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