2

一部の保守作業には、Windows プラットフォームで cygwin を使用します。私がやりたいことは、Pythonを使用してcygwinを起動したり、起動して単一のコマンドを渡すだけではありません。

cygwin を起動してセッションを保持し、必要に応じてコマンドを渡し、コンソール出力を取得します。次に、必要に応じて 2 番目のコマンドを渡して出力を取得します...

これを実行したいのは、当社が一連のコマンドを使用してサーバーと通信するためです。次のようなものです。 ステップ 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 に答える