Hier nochmal ein ganz besonders seltsamer und unausgereifter Scriptschnipsel von meiner Platte, aber vielleicht kann ich ihn irgendwann nochmal gebrauchen. Das Ding schaut mit lsof, welcher Prozeß einen TCP-Port offenhat und sucht den Namen dazu aus der Prozeßliste raus.
#!/usr/bin/perl -w
use strict;
my $retval = system ("lsof -h >/dev/null 2>&1");
die "Kann lsof nicht finden.
\n" if ($retval);
my %ports;
my @output;
@{$ports{tcp}} = `lsof -P -i TCP | grep -v "^COMMAND" | grep LISTEN`;
@{$ports{udp}} = `lsof -P -i UDP | grep -v "^COMMAND" | grep Idle`;
foreach my $protocol ("tcp", "udp"){
foreach my $line (@{$ports{$protocol}}){
my @fields = split /\s+/, $line;
my $command = $fields[0];
(my $port = $fields[-2]) =~ s/\*://;
push @output, sprintf ("%-5s %3s -> %-30s\n", $port, $protocol, $command);
}
}
my $prev = "";
@output = (sort { $a cmp $b } (@output));
@output = grep($_ ne $prev && ($prev = $_), @output);
foreach (@output){
print;
}
