use strict;
# Variables
my @nmap;
my @port;
my @protocol;
my @pid;
my @app;
my $junk;
my $i;
print "\nScanning for open ports... ";
chomp(@nmap = `nmap localhost`);
for (1..5) {
shift(@nmap);
}
for (1..2) {
pop(@nmap);
}
$i = 0;
foreach (@nmap) {
if (! @nmap[$i] =~ /^\s*$/) {
(@port[$i], @protocol[$i]) = split /\//, $_;
@protocol[$i] = split / /, @protocol[$i];
@pid[$i] = `fuser -n @protocol[$i] @port[$i]`;
chomp(($junk, @pid[$i]) = split /:\s+/,@pid[$i]);
@app[$i] = `/bin/ps --no-headers -o %c @pid[$i]`;
$i++;
}
}
print "done.\n\n";
print "The following ports are open on your system\n\n";
printf "%8s%12s%12s%15s\n","Port", "Protocol", "PID", "App";
print "-----------------------------------------------\n";
$i = 0;
foreach (@nmap) {
printf "%8s%12s%12s%16s\n", @port[$i], @protocol[$i], @pid[$i][1], @app[$i];
$i++;
}
####
Scanning for open ports... done.
The following ports are open on your system
Port Protocol PID App
-----------------------------------------------
22 tcp 21232 sshd
515 tcp 21943 lpd
6000 tcp 1738 X
####
Scanning for open ports... done.
The following ports are open on your system
Port Protocol PID App
-----------------------------------------------
25 tcp 198 exim
53 tcp 226 named
139 tcp242 3995 3997 4007 4009 4011 smbd
143 tcp 269 1006 xinetd