Python 使用pexpect和交互式命令

Python 使用pexpect和交互式命令,python,puppet,pexpect,Python,Puppet,Pexpect,我正在尝试编写一个脚本,该脚本登录到远程服务器,启动一个进程,将日志文件输出到控制台(stdout),然后根据日志文件中看到的内容询问您是否要继续。基本上作为一个粗略的例子: import pexpect server = raw_input('Server to connect to: ') LoginPrompt = '[$#]' start_login = pexpect.spawn('ssh %s')%(server)) start_login.expect(LoginPrompt)

我正在尝试编写一个脚本,该脚本登录到远程服务器,启动一个进程,将日志文件输出到控制台(stdout),然后根据日志文件中看到的内容询问您是否要继续。基本上作为一个粗略的例子:

import pexpect

server = raw_input('Server to connect to: ')
LoginPrompt = '[$#]'

start_login = pexpect.spawn('ssh %s')%(server))
start_login.expect(LoginPrompt)
start_login.sendline('./bin/service.sh start')
start_login.expect(LoginPrompt, timeout=10)
start_login.sendline('more /logs/services/nohup.service.out')
# I want it to drop to an interactive session here for the more
service_status = raw_input('Do you want to continue? ')
etc..
我目前的问题是双重的。我真的希望“more”命令是交互式的,但我肯定还没有开始工作。作为一名黑客,我决定只“cat”输出,但即使这样做并使用print start\u login.after,我也没有得到任何输出。我可以在那里设置一个start_login.interact,但这也没有真正提供我想要的功能,而且我仍然无法从more/cat获得输出


感谢您的帮助

start\u login.interact()
的具体问题是什么?即使使用start\u login.interact()我也无法从前面的more/cat命令中获得输出。另外,当我使用它时,我必须“退出”交互式shell才能继续脚本,这并不理想。
.interact()
的要点是能够与
more
命令交互。如果需要通过ssh下载文件;这是另一个问题。我认为您可能希望
cat
文件,然后
。希望(LoginPrompt)
再次读取该内容,然后在
之前访问
。但是,由于提示实际上是通用的,因此如果文件包含
$
#
,它将只读取到该值。因此,您可能希望首先将提示更改为更清晰的内容。如果你使用,它会帮你解决。