#!/usr/bin/perl -w #$Id: cappkg.pl,v 1.3 2003/04/20 10:17:17 cws Exp $ use strict; my $CAP_INTERVAL=30; my $CAP_INTERFACE='xl2'; my $CAP_TMPFOLDER="/stat/traffic/raw/current"; my $CAP_PIDFILE="/var/run/cappkg.pid"; my $CAP_BASEFOLDER="/stat/traffic/raw"; my $IP_AUDIT='/var/ipaudit/ipaudit'; umask 027; if ( !-d $CAP_TMPFOLDER ) { `/bin/rm -rf $CAP_TMPFOLDER 2>&1`; `/bin/mkdir -p $CAP_TMPFOLDER 2>&1`; } #Stop current capture if ( -f $CAP_PIDFILE ) { open (PIDFILE, "<$CAP_PIDFILE") || die("Can not open pid file"); my $old_pid = ; chomp($old_pid); kill(2,$old_pid); close(PIDFILE); } my $child_id = fork(); my @t = localtime(); my $cap_file = sprintf("%04d%02d%02d%02d00.log", $t[5]+1900,$t[4]+1,$t[3], $t[2]); if ( $child_id == -1 ) { die("Can not fork. $!"); } if ( $child_id == 0 ) { my $cmd = $IP_AUDIT . ' -G -D 60 -m -S ' . "-o $CAP_TMPFOLDER/$cap_file -i $CAP_PIDFILE xl2"; exec($cmd) || die "Can not exec ipaudit.$!"; } opendir(DIRHANDLE,$CAP_TMPFOLDER) || die("Can not open $CAP_TMPFOLDER. $!"); my $fname; while ( $fname = readdir(DIRHANDLE) ) { if ( $fname =~ /(\d{12}).log/ && $fname ne $cap_file ) { my $p = $1; my $dest_path = sprintf("%s/%s/%s/%s",$CAP_BASEFOLDER, substr($p,0,4),substr($p,4,2), substr($p,6,2)); if ( !-d $dest_path ) { print `/bin/mkdir -p $dest_path 2>&1`; } my $new_fname = substr($p,8,4); `/usr/bin/gzip $CAP_TMPFOLDER/$fname`; `/bin/mv $CAP_TMPFOLDER/$fname.gz $dest_path/$new_fname.log.gz`; } } closedir(DIRHANDLE);