Networking

達到特定大小後停止寫入擷取文件

  • August 2, 2015

我想監控文件特定介面的網路流量。

如果總流量超過 60mb,我想停止介面。

有沒有辦法做到這一點?

dumpcapWireshark的低級流量抓包程序,可以通過選項指示在一定條​​件後停止抓包-a。您可以在寫入 60MB 後停止擷取。這與測量流量不同,因為它取決於文件​​編碼,但對於大多數用途來說它應該足夠接近(無論如何,確切的流量取決於您測量它的協議級別——乙太網、IP、TCP、應用程序,……)。

dumpcap -i eth0 -a filesize:61440 -w capture.dump

這是一個非常骯髒的方法,您可以將其與 Perl 和 perl 的system命令一起使用。將介面 wlan0 上的tcpdump整個數據包轉儲到 file 。在我的範例中,它會在文件超過 1MB 後停止所有程序並關閉界面。根據您的需要進行更改。執行它。該語句暫停程序以提供啟動的機會。-s 0``-i wlan0``tcpdump.pcap``sudo``sleep``tcpdump

我在 Linux Mint 上,因此您的系統上的程序路徑和介面名稱可能不同。

#!/usr/bin/perl
use warnings;
use strict;

my $file = 'tcpdump.pcap';
my $int = 'wlan0';
my $bytes = 1000000;

my $pid = open my $pipe, 
 "| /usr/sbin/tcpdump -n -i $int -s 0 -w $file &",
 or die $!;

sleep 3;

while (1){

   if (-s $file > $bytes){
       print "Killing PID $pid, tcpdump and disabling $int\n";
       system "kill -9 $pid; killall tcpdump";
       system "/sbin/ifconfig $int down";
       exit;
   }
}

引用自:https://unix.stackexchange.com/questions/219632