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; }