2014-03-03 38 views
2

我们在Windows平台中使用cygwin进行一些维护工作。我想要做的不仅是使用python启动cygwin,或者启动它并传递一个命令。使用python与Cygwin(mintty)进行通信(执行命令)并获得输出

我想启动cygwin,保持会话,然后我传递一个命令给它,并获得控制台输出,然后如果我想,我传递第二个命令,并得到输出...

我想这样做,是因为我们公司用了一堆命令与服务器通信,下面类似的东西: 第1步:登录 第2步:initInfo 步骤3:的getStatus =端口1

我不能传递一次命令,因为我需要根据先前命令的输出来控制下一个应该传递哪个命令。

我可以使用下面的命令来启动mintty.exe并获取进程ID,如何将命令传递给此特定的mintty应用程序并使用python获取输出,并且我需要与mintty进行多次通信每次当我想要执行一个命令时不需要启动新的mintty。

p_mintty = subprocess.Popen(['c:/cygwin/bin/mintty.exe', '-'], shell = True, stdout = subprocess.PIPE, stderr = subprocess.STDOUT) 

您的任何建议都受到热烈欢迎!

回答

1

试试这个:

program = subprocess.Popen(['c:/cygwin/bin/mintty.exe', '-'], stdin=subprocess.PIPE, stdout=subprocess.PIPE) 

program.stdin.write("command1") 
stdout1, stderr1 = program.communicate() 

program.stdin.write(change_something(stdout1)) 
stdout2, stderr2 = program.communicate() 
..etc 
+0

谢谢您的回答,但似乎该方案只是挂就行了,“stdout1,stderr1 = program.communicate()”和“命令1”这是我写的五光十色的窗户也没有出现。 – lowitty

+0

你正在输入的命令是什么,你期待什么? – icedtrees

+0

一个简单的命令“ls -al”,因为我只是想验证它,所以我使用了一个简单的命令。 – lowitty

相关问题