2016-03-30 21 views
2

私は、出力を作成するPython内からプログラムを呼び出そうとしています。外部プログラムが終了したら、この出力で作業したいと思います。 プログラム文字列は外部プログラムのファイル出力へのアクセス

"sudo fing -r1> fingoutput.txt"です。

私は

from subprocess import call 

cmd = ['sudo', 'fing', '-r 1'] 

call(cmd) 

でプログラムを呼び出すために管理が、私はそれをファイルに出力のダイレクトすることはできません。

cmd = ['sudo', 'fing', '-r 1 > fingoutput.txt'] 

または

cmd = ['sudo', 'fing', '-r 1', '> fingoutput.txt'] 

エラー生成:私はそれが数千行であるかもしれないので、ファイルに出力を書き込みたい複数の発生

を。

ありがとう、

ハーバート

+0

あなたは完全なエラーを表示できますか?どのくらい正確にしようとしていますか – Keatinge

+0

最終的な目標は、どのMACアドレスが私のHPスイッチのどのポートに接続されているかを調べることです。これは、HP ProCurve Managerでサポートされなくなりました。その間、IPアドレスとそれに対応するMACアドレスについてネットワークをスキャンします。 Fingはこれを行います。今私はFingの出力を読んで、ネットワーク情報でデータベースを作成したいと思っています。どのIPがオンラインであるか、どのくらいの頻度でいつまでか。 – Herbert

答えて

1

あなたは、ファイルへのあなたのコマンドの出力をリダイレクトするstdout引数を使用することができます。

from subprocess import call 

cmd = ['sudo', 'fing', '-r 1'] 
file_ = open('your_file.txt', 'w') 
call(cmd, stdout=file_) 
0

あなたはシェルスクリプト自体からファイルにリダイレクトする場合は、必ずこの

のために行くことができます
cmd = 'sudo fing -r 1 > fingoutput.txt' 
call(cmd, shell=True) 

それとも

cmd = 'sudo fing -r 1 > fingoutput.txt' 
p = Popen(cmd, shell=True, stdout=PIPE, stdin=PIPE) 

維持シェル=セキュリティ上の問題につながる可能性が真。

関連する問題