2014-09-01 113 views

回答

69

這裏有一個整潔的方式做你想要什麼:

tcpdump -w - | tee somefile | tcpdump -r - 

做些什麼:

  • -w -告訴tcpdump二進制數據寫入stdout
  • tee寫道,二進制數據到文件和自己的stdout
  • -r -告訴第二tcpdump從其stdin
+1

使用此TECHNIC獲取其數據,是Wireshark抱怨的一些聲稱最後一個包是不完整的文件。我想tcpdump會在結束之前取消緩衝並寫入所有數據,但是,如果沒有,-U選項在此處可能會有用。從手冊頁:'使用-U標誌可以使數據包一收到就立即寫入.'。 (當tcpdump被終止時,不要丟失任何緩衝/仍未寫入的文件包)。不過,我還沒有做出改變來確認。 – maganap 2015-07-29 15:32:38

+0

爲什麼不能'tcpdump主機 | tee/tmp/output'。這可以避免在最後使用第二個tcpdump。對 ? – deppfx 2015-08-05 23:05:56

+2

@deppfx這將工作,僅以保存文本爲代價。 '-w'使'tcpdump'以標準二進制格式寫入數據。 – cnicutar 2015-08-06 09:46:23

-1
tcpdump ${ARGS} & 
PID=$! 
tcpdump ${ARGS} -w ${filename} 
kill $PID 
相關問題