Networking
達到特定大小後停止寫入擷取文件
我想監控文件特定介面的網路流量。
如果總流量超過 60mb,我想停止介面。
有沒有辦法做到這一點?
dumpcap
Wireshark的低級流量抓包程序,可以通過選項指示在一定條件後停止抓包-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; } }