35
我想讓tcpdump將原始分組數據寫入文件,並在捕獲數據包時在標準輸出中顯示數據包分析(通過分析,我的意思是當缺少-w時它通常顯示的行)。 任何人都可以請告訴我該怎麼做?如何讓tcpdump寫入文件和標準輸出適當的數據?
我想讓tcpdump將原始分組數據寫入文件,並在捕獲數據包時在標準輸出中顯示數據包分析(通過分析,我的意思是當缺少-w時它通常顯示的行)。 任何人都可以請告訴我該怎麼做?如何讓tcpdump寫入文件和標準輸出適當的數據?
這裏有一個整潔的方式做你想要什麼:
tcpdump -w - | tee somefile | tcpdump -r -
做些什麼:
-w -
告訴tcpdump
二進制數據寫入stdout
tee
寫道,二進制數據到文件和自己的stdout
-r -
告訴第二tcpdump
從其stdin
tcpdump ${ARGS} &
PID=$!
tcpdump ${ARGS} -w ${filename}
kill $PID
使用此TECHNIC獲取其數據,是Wireshark抱怨的一些聲稱最後一個包是不完整的文件。我想tcpdump會在結束之前取消緩衝並寫入所有數據,但是,如果沒有,-U選項在此處可能會有用。從手冊頁:'使用-U標誌可以使數據包一收到就立即寫入.'。 (當tcpdump被終止時,不要丟失任何緩衝/仍未寫入的文件包)。不過,我還沒有做出改變來確認。 – maganap 2015-07-29 15:32:38
爲什麼不能'tcpdump主機 | tee/tmp/output'。這可以避免在最後使用第二個tcpdump。對 ? –
deppfx
2015-08-05 23:05:56
@deppfx這將工作,僅以保存文本爲代價。 '-w'使'tcpdump'以標準二進制格式寫入數據。 – cnicutar 2015-08-06 09:46:23