以前、私はこの質問をした:Pythonでpingまたはtracerouteを実行し、出力が生成されたときにその出力にアクセスするにはどうすればよいですか?
How can I perform a ping or traceroute using native python?
しかし、Pythonはrootとして実行されていないので、それはネイティブのpythonでのping/tracerouteを実行するために必要な生のICMPソケットをオープンする能力を持っているdoens't。
これは、システムのping/tracerouteシェルコマンドの使用に戻ります。この質問はうまく動作するようには思えsubprocess
モジュールを使用したカップルの例があります。
私はまだかかわらず、1以上の要件を持っている:それは(生成されたとして、私は出力にアクセスできるようにする必要があります例えばため。
上記の例はすべてシェルコマンドを実行し、コマンドが完了すると完全な出力にアクセスできるようにします。生成されたコマンド出力にアクセスする方法はありますか?
編集:アレックスマルテッリの答えに基づいて、ここで働いていたものです:
import pexpect
child = pexpect.spawn('ping -c 5 www.google.com')
while 1:
line = child.readline()
if not line: break
print line,
これはLinux上でのみ動作するので、pexpectを使用することは問題ではありません。私は今それをチェックしている。 –
Linux(そして私が試した他のすべてのunixoidシステム、MacOSX ;-)では、pexpectが魅力を発揮します。問題があるかどうかは私たちに知らせてください。解決されました - ) –
うわー、pexpectは完璧にそして簡単に(そしてより多くのものを束にすることができます)働いていました。 –