#!/usr/bin/perl #Connection-Tracker-0.1.pl #This script can be used to find the no of connections to each port on the basis of type(SYN,TIME_WAIT,ESTABLISHED) #Sujai Sojan $VERSION = 0.1; print "Port:"; $Portin=; print "State(0.TIME_WAIT,1.ESTABLISHED,2.SYN):"; $Statein=; @states=("TIME_WAIT","ESTABLISHED","SYN"); print "No of minimum connections:"; $Nocon=; %seen = (); @netstat=`netstat -antu`; foreach (@netstat) { if($_ =~ /(\d*)\.(\d*)\.(\d*).(\d*)/) { ($Proto,$Recv,$Send,$Local,$Foreign,$State)=split(' ',$_,6); ($Ipaddress,$Port)=split(':',$Local,2); if(($Port == $Portin) && ($Foreign !~ /0\.0\.0\.0/)&& ($Foreign =~ /(\d*)\.(\d*)\.(\d*).(\d*)/) && ($State == $states[$Statein])) { ($Ipaddress,$Port)=split(':',$Foreign,2); $seen{$Ipaddress} ++; } } } print "Ipaddress : No of Connections"; sub hashValueAscendingNum { $seen{$a} <=> $seen{$b}; } foreach $key(sort hashValueAscendingNum (keys (%seen))) { if($seen{$key} gt $Nocon) { print "$key\t\t\t $seen{$key}\n"; } } =head1 NAME Connection-Tracker =head1 AUTHOR Sujai Sojan =head1 DESCRIPTION This script can be used to find the no of connections to each port on the basis of type(SYN,TIME_WAIT,ESTABLISHED) =pod OSNAMES Linux =pod SCRIPT CATEGORIES Unix/System_administration =cut