2016-10-03 2 views
0

サブプロセス呼び出しを初めて使用しています。次のスクリプトで問題を理解するのを手伝ってください。ファイル名subprocess.callを使用してpcapファイルを読み取っているときに長すぎます

大きなパケットセットの特定のIPアドレス(ipadd)からのパケットのみを含む新しいPCAPファイル(filter1.pcap)を書き込もうとしています。 (superset.pcap)拡大PCAPファイルに含まれる様々なIPアドレスから

にエラーがある:OSErrorの[エラー番号36]ファイルが長すぎる名前

コードは以下の通りである:

from subprocess import * 
pcapfile = rdpcap("superset.pcap") 
ipadd = "192.168.1.1"    
fileout = "filter1.pcap"   
command = "sudo tcpdump -w %s -r %s src %s" %(fileout,pcapfile,ipadd) 
subprocess.call([command]) 

下のコマンドは、Linuxで完全に正常に動作します:

sudo tcpdump -w filter1.pcap -r superset.pcap src 192.168.1.1 

は論理エラーがここにありました。これが解決され、 CKS

+0

はPCAP =「superset.pcap」あなたが失敗するこれ、最初のscapyでファイルを開いて、その後、tcpdumpの出力を供給しているように見えにpcapfile = rdpcap(「superset.pcap」)を変更してみてください。 –

+0

ありがとう、ジェフ。はい、それは問題でした! – CKS3976

答えて

0

、ありがとうございました。私はrdpcapを使って完全なPCAPファイルを読んでいて、その値をtcpdumpに渡していました。そこで、tcpdumpは完全なファイル自体をファイル名として読み込んでいました。

コードを次のように変更しました。現在は動作しています。

import os.path 
pcapfile = "superset.pcap" 
ipadd = "192.168.1.1"   
fileout = "filter1.pcap"   
command = "sudo tcpdump -w %s -r %s src %s" %(fileout,pcapfile,ipadd) 
os.system(command) 
関連する問題