我有pcap文件不斷生成給我。它想不斷地將它們餵給一個「永不停息」的tshark/wireshark。以下是我已經試過(OSX)連續向pcshark/wireshark提供pcap文件
mkfifo tsharkin
tail -f -c +0 tsharkin | tshark -l -i - > tsharkout 2>stderr &
cat file1.pcap > tsharkin
在tsharkout
cat file2.pcap > tsharkin
以上來自file1.pcap以上正常工作,我得到預期輸出的不工作,我什麼也沒得到在tsharkout,但我得到在標準錯誤「1包丟棄」 +「捕獲三包」
cat file2.pcap > tsharkin
再次嘗試使尾/ tshark的進程停止/崩潰
我試過再次做,但這次先用file2.pcap再用file1.pcap。這一次file2.pcap處理得很好,並且file1.pcap正在使tail/tshark進程停止/崩潰。所以我會得出這樣的結論:兩個pcap文件沒有什麼不對,但似乎tshark不喜歡有多個pcap文件拋出。
只是爲了測試它,我第一次嘗試使用mergecap合併file1.pcap和file2.pcap,和飼料到這一點tshark的
mergecap -F pcap -w file1_2.pcap file1.pcap file2.pcap
cat file1_2.pcap > tsharkin
這工作得很好,我得到預期輸出來自file1.pcap和file2 tsharkout中的.pcap
問題在於我的pcap文件一路走來,所以我不能在喂入tshark之前合併它們。我需要能夠在它們到達時將pcap文件提供給「永遠運行」的tshark。我怎樣才能做到這一點?
爲什麼不把這段代碼包裝在一個節點服務器中,並且每次接收到一個文件時都產生一個新的tshark。 高級算法, - 在新生成的管道中接收pcap。 (可能將它命名爲時間戳) - 使節點應用程序輪詢目錄以檢查新創建的命名管道。 - 一旦收到命名管道上的pcap,產生一個運行tshark的子進程。 - 將結果寫入通用目錄。 – Himanshu97
@ Himanshu97它不會這樣做。兩個連續的pcap文件可能包含屬於同一個會話的數據。例如。一個html文檔通過幾個ip數據包在線上傳輸。這些ip數據包的前半部分可以在file1.pcap中,而這些ip數據包的後半部分可以在file2.pcap中。我想要重建html文檔,並且只有在file1.pcap和file2.pcap饋入同一個tshark實例時纔會發生。 –
在這種情況下,您可以簡單地將文件傳輸到您的unix管道中,如下所示: 「cat」| tsharkin「 並使tshark始終從管道中讀取。 所以會發生什麼,你會將你的文件內容追加到管道中。 和命名管道作爲FIFO,所以它應該工作。 –
Himanshu97