我们在windows平台中使用cygwin进行一些维护工作。我想做的不仅仅是使用python启动cygwin,或者启动它并传递一个命令。
我想启动cygwin,保持会话,如果需要的话,我会向它传递一个命令,并获得控制台输出,如果需要,我会传递第二个命令并获得输出。。。
我想这么做是因为我们公司使用了一堆命令与服务器通信,类似于下面的内容:步骤1:登录步骤2:initInfo步骤3:getStatus=Port1
我不能传递一次命令,因为我需要根据前面命令的输出控制下一次传递哪个命令。
我可以使用下面的命令启动mintty.exe并获取进程id,如何使用python将命令传递给某个mintty应用程序并获取输出,并且我需要与mintty进行多次通信,而每次执行命令时都不启动新的mintty。
p_mintty = subprocess.Popen(['c:/cygwin/bin/mintty.exe', '-'], shell = True, stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
欢迎您的任何建议!
试试这个:
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