Open Source im professionellen Einsatz

Perl-Skript für periodische Kommandoaufrufe

Netz-Journal

Was der Rechner im eigenen Netz treibt, offenbart ein Aufruf von »netstat«. Mit ein paar Perl-Modulen lässt sich daraus ein Tool entwickeln, das die Daten dynamisch anzeigt, ganz nach dem Vorbild von Top.

Wer wissen will, welche Ports gerade für Netzwerkaufgaben in Verwendung sind, ruft »netstat« auf. Das praktische Linux-Utility kennt mehrere Modi, die der Benutzer über Kommandozeilenoptionen ansteuert. Die Option »-s« produziert beispielsweise eine Statistik des Netzwerkverkehrs (Abbildung 2), »-put« hingegen gibt die Ports aller Applikationen aus, die gerade über TCP kommunizieren (Abbildung 1). Beide Ausgaben sind nützlich, doch eigentlich interessiert auch die zeitliche Abfolge, nicht nur ein Sekundenschnappschuss.

Abbildung 1: Die Ausgabe des Kommandos »netstat -put« zeigt eine Liste aktiver TCP-Ports.

Abbildung 1: Die Ausgabe des Kommandos »netstat -put« zeigt eine Liste aktiver TCP-Ports.

Abbildung 2: Das Kommando »netstat -s« liefert statistische Daten über den von Linux bewältigten Netzwerkverkehr.

Abbildung 2: Das Kommando »netstat -s« liefert statistische Daten über den von Linux bewältigten Netzwerkverkehr.

Top fürs Netzwerk

Das Vorbild für eine solche dynamische Ausgabe liefert das Utility »top«, das Anzeigen für die Auslastung des Rechners, den Speicherverbrauch und weitere Eckdaten der laufenden Prozesse ständig auffrischt. Aus der statischen Ausgabe von »netstat« eine entsprechende dynamische Terminalapplikation zu erzeugen ist dank CPAN aber nicht weiter schwer.

Das Modul Curses::UI, das im Perl-Snapshot [2] schon einmal für einen Video-Selektor zum Einsatz kam, liefert auch hier das passende Framework. Es sorgt für die dynamischen Ausgaben und ermöglicht es, auf Tastendrücke des Users zu reagieren. Seine Eventschleife lässt sich leicht in den Kernel des Perl-Objekt-Environments (POE) einbinden, das den Ablauf vieler verschiedener Tasks in einem Prozess und einem Thread möglich macht.

Nicht einfrieren!

Hier ergibt sich bei allen GUI-Applikationen, die andere Programme aufrufen, ein Problem: Während die externe Anwendung läuft, reagiert die aufrufende nicht mehr auf Benutzereingaben und Mausklicks. Beim Anwender entsteht das Gefühl, sie sei eingefroren.

Das Kommando »netstat« läuft im Allgemeinen zwar recht zügig durch, mit der Option »-put« löst es jedoch auch IP-Adressen durch einen Reverse-DNS-Aufruf in Hostnamen auf. Bei einem langsamen DNS-Server oder vielen Sockets führt dies zu beachtlichen Verzögerungen. Dies ließe sich durch die Option »-n« verhindern, der Anwender müsste sich dann nur mit IP-Adressen begnügen. Das Beispiel besteht aber auf dem Luxus der Namensauflösung.

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook