Sollte ich Perl oder Python für Netzwerk-monitoring?
Möchte ich einige arbeiten an der Netzwerk-front -, Ping zahlreichen Computern auf einer LAN und abrufen von Daten über die Reaktionszeit. Das wäre den meisten nützliche und produktive arbeiten mit: Perl oder Python?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin damit einverstanden, dass es ziemlich subjektiv ist die Programmiersprache, die Sie verwenden - im wesentlichen würde ich eher den job zu erledigen so schnell und effizient wie möglich, das macht es erträglich - also das hängt von Ihrer Infrastruktur...
Kann ich schlage vor, Sie schauen sich Nagios, anstatt neu zu erfinden das Rad selbst?
Während Nagios erfordert möglicherweise eine größere Lernkurve in Bezug auf die Konfiguration, es wird sich lohnen auf lange Sicht, und wenn Sie nicht finden können, ein plugin, um Ihren Anforderungen gerecht zu werden, dann ist es einfach eigene zu schreiben. Joel Spolsky hat einen interessanten Artikel geschrieben auf dieser.
Gut, arbeite ich sowohl Perl und Python, und mein job ist die Unterstützung eines Netzwerk-monitoring-software. Die meisten der import-Punkte wurden bereits behandelt, aber ich werde festigen/wiederholen, hier:
Das Rad nicht neu erfinden - es gibt Dutzende von Netzwerk-monitoring-Lösungen, die Sie zum ausführen von ping-tests und analysieren der gesammelten Daten. Siehe zum Beispiel
Wenn Sie darauf bestehen, dies zu tun selbst, diese kann getan werden, entweder in Perl oder Python verwenden Sie die, die Sie am besten kennen. Wenn Sie planen, analysieren viel text, es wird einfacher sein, dies zu tun "quick and dirty" in Perl als in Python. Beide können es, aber Python benötigt einen OOP-Ansatz, und es ist einfach nicht so einfach wie Perl-inline-regex-syntax.
Bibliotheken - viele, viele Menschen getan haben, diese Aufgabe, bevor Sie so sehen sich um nach einem passenden lib-wie Net::Ping mit Perl oder der icmplib in Python oder diese ping.py code.
Benutzung von threads oder asynchrones pings - sonst Ping ist wird ewig dauern, siehe zum Beispiel dieses Rezept mit threads ausgeführt werden Ping-Signale gleichzeitig. Dies ist besonders einfach im Python unter Verwendung der beiden Ansätze, so ist dies ein Ort, Python wird leichter sein, mit zu arbeiten IMO als mit Perl.
Gehen mit Perl.
Haben Sie Zugang zu einem schönen Ping-Objekt, Net::Ping und speichern Sie die Ergebnisse in eine Datenbank ist ziemlich einfach.
Beiden sollte gut funktionieren. Wenn Sie keine Erfahrung mit entweder, wirf eine Münze. Keine Sprache ist von Natur aus produktiv; Sprachen ermöglichen den Menschen, um produktiv zu sein. Verschiedene Menschen profitieren unterschiedlich von verschiedenen Sprachen.
Im Allgemeinen, obwohl, wenn Sie wissen, dass Ihre spezielle Aufgabe und müssen Sie ein tool zu verwenden, suchen Sie für die Bibliotheken, die machen Ihr Leben einfach. Für Perl, schauen Sie sich die Comprehensive Perl Archive Network. Es gibt Module für einfach jede Vernetzung, was Sie brauchen könnten.
Python hat vermutlich sehr ähnlich tools und Bibliotheken; ich weiß nur nicht, was Sie sind.
Weiß ich Perl besser als Python, also meine Wahl würde fallen auf Perl. Das heißt, ich würde argumentieren, dass auf low-level-Aufgaben (wie Ping Computer in einem Netz und Dinge wie, dass) Sie sind ziemlich gleichwertig. Python kann eine bessere Objekt-orientierte Unterstützung, aber für die Skripterstellung verwenden (das passiert zu sein, was Sie brauchen) die macht von Perl ist ziemlich offensichtlich. Der große pool von getesteten Modulen (einige von Ihnen sind auch Objekt-orientiert), die Sie auf CPAN können in der Regel tun alles, was Sie brauchen, und Sie können auch gut skalieren, wenn Sie Sie entsprechend.
Ich weiß nicht, Python, so dass ich kann nicht kommentieren, was es bietet, und ich Stimme mit denjenigen, die vorschlagen, die Nagios oder andere bestehende Systeme.
Jedoch, wenn Sie sich entscheiden, Rollen Sie Ihre eigenen system mit Perl, Erwägen Sie die Verwendung POE. POE ist ein kooperatives multitasking und networking framework.
POE hat eine steile Lernkurve. Aber Sie wird zurückgezahlt, für die Sie Aufwand sehr schnell. POE wird eine solide Grundlage bilden, um aus zu bauen. Viel von der der client-code Sie benötigen, ist bereits verfügbar auf CPAN.
Je nachdem, was Sie besser wissen oder mehr sind komfortabel mit. Beide können den job tun, und tun es auch, so ist es Ihre Präferenz.
Jetzt habe ich experimentierte der Ansatz, erstellen einige einfache unit-test für Netzwerk-Dienste unter Verwendung verschiedener TIPPEN Bibliotheken (vor allem bash+netcat+curl und perl). Der Vorteil ist, dass Sie schrieb ein einziges Skript, das Sie verwenden können, für beide-Einheit und Netzwerk-Tests.
Das display ist dove per TAP::Harness::HTML.
Ich würde sagen, dass, wenn Sie etwas brauchen schnell und schmutzig, die läuft von heute Nachmittag, dann perl ist wahrscheinlich die bessere Sprache.
Jedoch für die Entwicklung von solid-Anwendung, die einfach zu warten und zu erweitern und auf die Sie bauen können im Laufe der Zeit, würde ich gehen mit python.
Dies ist natürlich vorausgesetzt, Sie kennen beide Sprachen mehr oder weniger gleich gut.