#!/usr/bin/perl -w
#
# $Id: batch.pl,v 1.4 2000/06/29 05:48:45 kjc Exp $
#
# usage: batch.pl file [file2 ...]
#
# batch.pl reads an tcpdump trace files and creates:
# - a trace file with IP addresses scrambled using tcpdpriv
# - a html file for the scrambled file using tcpdstat, fly
# and other scripts.
# then updates index.html.
# input files can be gzipped format.
#
umask(002);
$statfile = "stat.out";
$toolpath = ".";
if ($0 =~ /(.*)\/.*/) {
$toolpath = $1;
}
while ($file = shift @ARGV) {
unless (-r $file) { die "Can't read $file!\n"; }
print "processing $file ...\n";
# if the suffix is ".gz", the dumpfile is gzipped
$gzipped = 0;
if ($file =~ /.*\.gz$/) {
print "using gzipped file: $file \n";
$gzipped = 1;
}
# find an Id (using "-c 1" for tcpdstat)
$id = 0;
if ($gzipped) {
open(FOO,"gzip -dc $file | $toolpath/../bin/tcpdstat -c 1 |");
}
else {
open(FOO,"$toolpath/../bin/tcpdstat -c 1 $file |");
}
while(<FOO>) {
if (/^Id:\s*(\w+)/) {
$id = $1;
}
}
close(FOO);
unless ($id) { die "Can't find id!\n"; }
print "using Id: $id\n";
# scrambled file name is "<id>.dump"
$scrambled = $id . ".dump";
if ($gzipped) {
system "gzip -dc $file | $toolpath/../bin/tcpdpriv -r - -w $scrambled";
}
else {
system "$toolpath/../bin/tcpdpriv -r $file -w $scrambled";
}
print "collecting stat info...\n";
$tmpfile = "stat." . $id;
$pktfile = $id . ".pktlen.txt";
system "$toolpath/../bin/tcpdstat -w $pktfile $scrambled > $tmpfile";
print "gzipping the scrambled file...\n";
system "gzip -f $scrambled";
print "making html files...\n";
system "$toolpath/mkhtml.pl < $tmpfile";
system "$toolpath/barchart.pl < $tmpfile";
system "mv $tmpfile $statfile";
# make packet size distribution graph
$percentile = $id . ".pctl";
system "$toolpath/pktcumul.pl $pktfile > $percentile";
system "$toolpath/pktsize.pl $percentile";
unlink $percentile;
}
print "remaking index.html\n";
system "$toolpath/mkindex.pl";
print "all done\n";
exit 0;
syntax highlighted by Code2HTML, v. 0.9.1