2

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

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

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

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

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

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

热烈欢迎您的任何建议!

4

1 回答 1

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
于 2014-03-03T08:46:22.683 回答