캡처 파일이 특정 크기에 도달하면 쓰기 중지

캡처 파일이 특정 크기에 도달하면 쓰기 중지

파일의 특정 인터페이스의 네트워크 트래픽을 모니터링하고 싶습니다.

그런 다음 총 트래픽이 60MB를 초과하면 인터페이스를 중지하고 싶습니다.

이를 수행할 수 있는 방법이 있습니까?

답변1

dumpcap, 저수준 트래픽 캡처 프로그램와이어샤크, 이 옵션을 사용하여 특정 조건 후에 캡처가 중지되어야 함을 나타낼 수 있습니다 -a. 60MB를 쓴 후 캡처를 중지할 수 있습니다. 이는 파일 인코딩에 따라 달라지므로 트래픽을 측정하는 것과 동일하지 않지만 대부분의 경우 충분히 가까워야 합니다(상관없이 정확한 트래픽은 측정하는 프로토콜 수준(이더넷, IP, TCP, 애플리케이션)에 따라 다릅니다). ...).

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

답변2

이것은진짜더티 메소드는 Perl 및 Perl system명령과 함께 사용할 수 있습니다. 인터페이스 wlan0의 전체 패킷이 파일로 덤프 tcpdump됩니다 . 내 예에서는 파일이 1MB를 초과하면 모든 프로세스를 중지하고 인터페이스를 닫습니다. 귀하의 필요에 맞게 변경하십시오. 그것을 실행하십시오 . 이 명령문은 프로그램을 일시 중지하여 시작할 기회를 제공합니다.-s 0-i wlan0tcpdump.pcapsudosleeptcpdump

저는 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;
    }
}

관련 정보