Perl oder Python, besser geeignet für die Unix-Systemautomatisierung?

7

Ich habe bashfür die meisten meiner Systemverwaltungsaufgaben verwendet. Ich kenne auch ein bisschen Perl.

Soll ich lernen Pythonoder Perlist besser für die Systemautomatisierung. Bisher war es meiner Erfahrung nach einfach, Perl zu lernen.

Nitine
quelle
Soll ich einen schwarzen oder einen weißen Server kaufen? Beide machen den Job, also wählen Sie den aus, der am besten zu Ihnen passt .
John Gardeniers
1
Vielleicht möchten Sie "Minimal Perl" lesen. Es zeigt, wie Perl als Ersatz für viele gängige Shell-Dienstprogramme verwendet wird, und richtet sich an * nix-Benutzer: minimalperl.com
Joe Internet

Antworten:

9

Kurze Antwort: Lerne beides.

Sie werden beide als Systemadministrator kennenlernen, daher möchten Sie wissen, wie Sie beide lesen / beheben / debuggen können.

Was das Schreiben von Skripten angeht, habe ich in den letzten 10 Jahren hauptsächlich Perl für die meisten meiner Sysadmin-Dienstprogramme und "Kleber" -Skripte verwendet. Die Regex-Syntax ist sehr einfach und eignet sich sehr gut für eine extrem schnelle Skriptentwicklung. Dies ist sehr wichtig, wenn Sie etwas vor Ort zum Laufen bringen müssen.

In letzter Zeit habe ich mich aus folgenden Gründen bemüht, mehr Python zu verwenden:

  • Es erfordert viel Disziplin, um gutes Perl zu schreiben. Allzu oft hat sich in einem "Quick n 'Dirty" -Skript im Laufe der Zeit mehr Funktionen eingeschlichen, die jedoch immer noch hastig implementiert wurden. Es dauert nicht lange, bis Sie eine umfangreiche Datei mit Leitungsrauschen haben, die von einer PITA verwaltet werden muss.

  • Das Schreiben von OO-Code (oder sogar wiederverwendbarem Code) in Perl ist im Vergleich zu Python nicht einfach. Glauben Sie mir, auf lange Sicht möchten Sie viel wiederverwendbaren Code (und nicht Ausschneiden und Einfügen!)

  • Pythons Prinzipien ( import this) eignen sich viel besser für die Zusammenarbeit mit anderen als Perls TMTOWTDI-Prinzip. Wenn Sie jemals das Perl eines anderen gelesen haben, wissen Sie vielleicht, dass es das Frustrierendste sein kann, es zu entwirren. Python leidet aufgrund seines Designs weit weniger unter diesem Unleserlichkeitsproblem. Schlimmer noch ist es, wenn Sie nach vielen Jahren auf Ihren eigenen Perl stoßen. Sie werden sich fragen, an welchem ​​Punkt Sie geschwärzt haben müssen.

  • Die Dokumentation ist wichtig, wenn Ihr Code eine Weile dauern wird. Das Schreiben von Docstrings in Python ist viel einfacher als das Schreiben von Pod-Markups in Perl. Einfach genug, dass Sie es tatsächlich verwenden könnten.

Ich benutze Perl immer noch ziemlich oft, aber es ist jetzt mehr für Einzeiler und "Wegwerf" -Skripte, die nur einmal ausgeführt werden. Wenn ich denke, dass ich das Skript jemals wieder bearbeiten werde, denke ich stattdessen an Python.

Cakemox
quelle
Ja, ich habe gehört, Python ist eine gute Codierung in OO. Aber für Sysadmins ist das Schreiben in OO erforderlich. Ich glaube nicht, dass ich etwas über 100 Zeilen schreiben werde.
Nitins
3
Es ist nicht erforderlich, nein. Sie werden es jedoch antreffen, daher ist es hilfreich, sich damit vertraut zu machen.
Cakemox
1
+1 Ich stimme definitiv zu "Schlimmer noch, wenn Sie nach vielen Jahren auf Ihren eigenen Perl stoßen. Sie werden sich fragen, an welchem ​​Punkt Sie geschwärzt haben müssen." Und Sie können "viele Jahre" durch 6 Monate ersetzen!
Niall Donegan
Als Systemadministrator schreibe ich regelmäßig über 100 Zeilen. Wenn ich 100 Zeilen erreicht habe, wünsche ich mir normalerweise, ich hätte Bash nicht verwendet :-) Ich verwende Python (früher Perl), wenn ich weiß, ob es so lange dauern wird.
Steven
Ich weiß, dass diese Frage vorbei ist, aber es schmerzt mich zu sehen, dass das Ding „Perl ist nur Linienrauschen“ immer noch die Runde macht. Shell-Scripting ist auch Zeilenrauschen, wenn Sie es schlecht machen. Python ist nicht weniger anfällig für das Designmuster "Big Ball of Mud" als jede andere Hochsprache. Sagen Sie einfach Nein zum Eifer der Implementierung. Konzentrieren Sie sich auf zuverlässige, wartbare Muster in jeder Sprache, die zu Ihrer Umgebung passt.
Jeff Albert
3

Es hängt davon ab, was Sie versuchen und wo Sie es versuchen. Wenn alle Dinge gleich sind und Sie keine Einschränkungen für Ihre Umgebung haben, alles installieren können, was Sie möchten, und sich nicht um die Interaktion mit Legacy-Code kümmern müssen, können Sie die Sprache auswählen, die Ihren persönlichen Vorlieben am besten entspricht.

Das heißt, für die Sysadmin-Arbeit denke ich, dass Perl einen Vorteil hat: Es ist auf allem installiert, was sofort einsatzbereit ist, und das seit ungefähr dem Beginn der Zeit. Wenn Sie ein Systemautomatisierungs- oder Verwaltungsskript schreiben und nur Perl-Kernmodule verwenden, können Sie fast sicher sein, dass es überall in Ihrer heterogenen UNIX-Umgebung ohne Änderungen ausgeführt wird und mit einer Installation von ActiveState oder Windows problemlos auf Windows erweitert werden kann Erdbeer Perl.

Ich hoffe, das hilft!

Jeff Albert
quelle
1

Ich würde Python empfehlen. Ich kenne Perl genug, bin aber kein Experte und meine Erfahrung mit Python war weit überlegen. Ich denke, es hängt von Ihren Anforderungen ab, aber wenn es nur für die Systemautomatisierung ist, würde ich den Python-Weg gehen und Perl (vorerst) vergessen.

Hier ist eine großartige Möglichkeit, Ihre Zähne zu versenken:

http://diveintopython.org/toc/index.html

Mit Dingen wie Fabric in der Entwicklung kann es die Dinge wirklich einfacher machen:

http://docs.fabfile.org/en/1.0.0/index.html

Beispiel von der Seite:

from fabric.api import run

def host_type():
    run('uname -s')

Ausgabe

$ fab -H localhost,linuxbox host_type
[localhost] run: uname -s
[localhost] out: Darwin
[linuxbox] run: uname -s
[linuxbox] out: Linux

Done.
Disconnecting from localhost... done.
Disconnecting from linuxbox... done.
Pablo
quelle
Ich bevorzuge func ( fedorahosted.org/func ) für diese Art von Aufgaben - es ist in Python geschrieben und basiert nicht auf ssh.
Jamespo
Schön, schade, es unterstützt nur Fedora / EL
Pablo
0

Sie sind gleichwertig; Für einen Heimcomputer, den Sie verwenden, hängt es davon ab, in welchem ​​Sie sich wohler fühlen. Wenn Sie jedoch mit anderen arbeiten, sollten Sie sich an festgelegte Standards halten (wenn alle anderen Python verwenden, sollten Sie Perl nicht ohne guten Grund verwenden und umgekehrt). .

Geekosaurier
quelle