使用python与(执行命令)Cygwin(mintty)进行通信并获取输出

时间:2014-03-03 08:39:18

标签: python windows cygwin mintty

我们在windows平台上使用cygwin进行一些维护工作。我想要做的不仅是使用python启动cygwin或启动它并传递一个命令。

我想启动cygwin,保持会话,然后我根据需要传递一个命令,然后获取控制台输出,然后如果我需要,我传递第二个命令并获得输出... < / p>

我想这样做是因为我们公司使用一堆命令与服务器通信,类似于下面的内容: 第1步:登录 第2步:initInfo 第3步:getStatus = Port1

我无法传递命令一次,因为我需要根据前面命令的输出控制下一个传递的命令。

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

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

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

1 个答案:

答案 0 :(得分: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