我想监控文件特定接口的网络流量。
然后,如果总流量超过 60mb,我想停止该接口。
有没有可能的方法来做到这一点?
答案1
答案2
这是一个真的dirty 方法可以与 Perl 和 perlsystem
命令一起使用。tcpdump
将把-s 0
接口 wlan0 上的整个数据包转储-i wlan0
到文件tcpdump.pcap
。在我的示例中,它会在文件超过 1MB 后停止所有进程并关闭界面。更改以满足您的需求。运行它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;
}
}