私はTelnetでデータロガーと通信したいと思います。したがって、私は次のpythonスクリプトを書いています:PythonでPlinkウィンドウを閉じる
import subprocess
command ='plink.exe -telnet -P 23 12.17.46.06'
p = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, bufsize=1, shell=False)
answer = p.communicate('command')[0]
print answer
スクリプトを実行すると、plink-windowsがポップアップします。 Pythonスクリプトは、plinkコマンドウィンドウ内で何らかのアクションが実行されるのを待っているようです。手動でウィンドウを閉じると、Pythonの中に目的の "答え"が表示されます。
私はPythonから直接plinkを閉じるコマンド/プロシージャを探しています。この場合、pythonとplinkの間の通信だけが閉じられ、プログラムplink.exe自体は閉じられないので、サブプロセスを閉じるだけでは十分ではないようです。
ご協力いただきましてありがとうございます。 よろしくお願いします。
communications() - コマンドの説明に感謝します。しかし、疑問は、pythonから直接plinkを終了する方法に残っています。 Pythonスクリプトは、Windows 7 64ビットで動作します。 –
あなたの質問は[XY問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)です。接続が閉じられると、plinkは終了します。あなたは*それを殺すために*どのように知っていますか?必要ならば、['.kill()'](https://docs.python.org/3/library/subprocess.html#subprocess.Popen.kill)を呼び出すことで、それを強制終了できます。もちろん、プロセスが終了するのを待ってブロックされている間は、プログラムは何もできません。マルチスレッド(バグなしでは非常に難しい)を学ぶか、通信にタイムアウトを与える()か、パイプを管理するノンブロッキング・アプローチを使用するかのどちらかです。 – dsh
さて、私は私の問題を再定式化しなければならない:どのように私はPython **でplink **によって確立されたtelnet接続を殺すことができますか?タイムアウトに関するあなたの提案は、私には十分です。しかし、前にも触れましたが、私はPythonからPlinkへの接続を終了できますが、plink自体のtelnet接続は終了できません。 –