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