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; }
Offtopic:
Sag mal, wo hast Du das AKTUELLE Wetter von wetter.com her? Ich kann da nur immer die VORHERSAGE für den aktuellen Tag finden (die sich auch aktuell nennt)???
Comment by Marcus — June 4, 2004 @ 6:44 am
Hast du was dagegen, wenn ich dir das Schnipsel für perlbase.xwolf.de kopiere?
Comment by xwolf — June 4, 2004 @ 7:42 am
@xwolf: Hmm, naja. So richtig salonfähig ist dieses Ding aber wirklich nicht. Eigentlich müßte es die Daten etwas besser aufbereiten, ephemäre Ports rauskegeln und so, und natürlich zu inetd-Diensten den Servicenamen raussuchen. Da gibts hier in der Perlabteilung echt einige Sachen, die dem Zustand der Vorzeigbarkeit deutlich näher kommen.
@Marcus: Keine Ahnung. Den Button habe ich da “der Nase nach” letztes Jahr im September hingemacht, als ich das Blog angefangen habe. Ob das heute irgendwie anders läuft, weiß ich nicht.
Comment by martin — June 4, 2004 @ 8:15 am
Sehr schick – wenn kein netstat -anp geht
Comment by Joern — June 4, 2004 @ 10:26 am