使用Python与Cygwin(mintty)通信并获取输出
我们在Windows平台上使用cygwin来进行一些维护工作。我想做的不仅仅是用Python启动cygwin,或者启动它并传递一个简单的命令。
我想要的是启动cygwin后保持这个会话,然后如果需要的话再传递一个命令给它,并获取控制台的输出。如果我想的话,再传递第二个命令并获取输出……
我这样做的原因是因为我们公司需要用一系列命令与服务器进行沟通,类似下面的步骤:
第一步:登录
第二步:初始化信息
第三步:获取状态=端口1
我不能一次性传递所有命令,因为我需要根据前一个命令的输出决定接下来要传递哪个命令。
我可以使用下面的命令来启动mintty.exe并获取进程ID,那么我该如何用Python将命令传递给这个特定的mintty应用程序并获取输出呢?而且我需要多次与mintty进行沟通,而不是每次执行命令时都重新启动一个新的mintty。
p_mintty = subprocess.Popen(['c:/cygwin/bin/mintty.exe', '-'], shell = True, stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
欢迎你们的任何建议!
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