我要爲WiFi(802.11)設計一個網絡分析儀 目前我使用tshark捕獲和解析WiFi幀,然後將輸出傳輸到perl腳本以存儲解析的信息到Mysql數據庫。如何將網絡數據包捕獲到MySQL
我剛剛發現我在這個過程中錯過了很多幀。我檢查和框架似乎丟失在管道(當輸出傳遞到perl以獲得在Mysql中) 這是怎麼回事
(Tshark)-------幀丟失 - --->(Perl的)-------->(MySQL的) 這是我怎麼管tshark的輸出腳本:
sudo tshark -i mon0 -t ad -T fields -e frame.time -e frame.len -e frame.cap_len -e radiotap.length | perl tshark-sql-capture.pl
這是我使用Perl腳本的簡單的模板(tshark-sql-capture.pl)
# preparing the MySQL
my $dns = "DBI:mysql:capture;localhost";
my $dbh = DBI->connect($dns,user,pass);
my $db = "captured";
while (<STDIN>) {
chomp($data = <STDIN>);
($time, $frame_len, $cap_len, $radiotap_len) = split " ", $data;
my $sth = $dbh-> prepare("INSERT INTO $db VALUES (str_to_date('$time','%M %d, %Y %H:%i:%s.%f'), '$frame_len', '$cap_len', '$radiotap_len'\n)");
$sth->execute;
}
#Terminate MySQL
$dbh->disconnect;
任何可以幫助改善性能的想法是ap preciated.Or可能有一個可以做得更好的替代機制。 現在我的表現是50%,這意味着我可以將大約一半的數據包存儲在mysql中。
禁止你在捕捉表有任何按鍵。每次更新都會導致密鑰更新,當您執行插入風暴時可能會導致主要的減速。關閉鍵,然後在完成插入後重建/重新啓用索引。 –