Welche Programmierer Dinge sollte jeder Sysadmin wissen?

20

Inspiriert von dieser Frage stelle ich die umgekehrte Frage : Wie viel über die Programmierung müssen Systemadministratoren wissen? Welche Programmiertools sind für einen Systemadministrator besonders nützlich?

Tim
quelle
1
Sollte das nicht eine SO-Frage sein? Ich denke, es wurde dort sowieso schon gefragt.
Tim Matthews
2
Ja, aber wie in dieser Frage erwähnt, gibt es zwei sehr getrennte Communities auf SF und SO. Ich denke, es wäre interessant zu sehen, welche Programmierer-Dinge Sysadmins glauben, dass Sysadmins wissen sollten, anstatt welche Programmierer-Dinge, die Programmierer glauben, dass Sysadmins wissen sollten.
Tim

Antworten:

29
  • Versionskontrolle . Sie können Patches generieren, lesen und anwenden. Erfahren Sie, wie Sie ein Versionskontrollsystem verwenden, das repository-weite Versionen bereitstellt, und warum Sie eine möchten. Wissen, wie man beschreibende Änderungsprotokolle schreibt und warum Sie sie wollen. Wissen, wie die Protokolle eines Repositorys nach Schlüsselwörtern und Zeitrahmen durchsucht werden.
  • Scripting . Mach mal was und mach dich auf den Weg. Mach es zweimal oder öfter, mach es einmal und schreibe dann ein Skript.
  • Debuggen . Wissen, wie ein Stack-Trace gelesen und relevante Fehler an Ihren Software-Support-Ansprechpartner gemeldet werden. Das Auffinden des Fehlers ist nett und hilfreich, aber zu wissen, wie man ihn behebt, kann eine Menge Investition in das Lesen des Codes bedeuten. Machen Sie den Teil, der für Sie einfach ist, und lassen Sie sie den Teil machen, der für sie einfach ist.
  • Testen . Kontinuierlich überwachen und Fehler protokollieren. In Verbindung mit der Versionskontrolle und dem Testen wissen Sie genau, was wann schief gelaufen ist und was sich dann geändert hat. Überwachen Sie sowohl die Produktion als auch die Vorproduktion.
  • Peer Review . Vorschlagen und Überprüfen von Änderungen an Produktionssystemen. Testen Sie die Vorproduktion, bestimmen Sie genau, was zu tun ist, und zeichnen Sie auf, welche Services wie lange betroffen sein können. Lassen Sie Change Management nicht in politische Kämpfe mit bürokratischer Macht zerfallen.
  • Kryptographie studieren . Ein moderner Systemadministrator ist für die Netzwerkressourcen verantwortlich. Das Hinzufügen von Sicherheit als letzter Schritt ist irgendwo zwischen unmöglich und sehr teuer. Das Verständnis der Kryptografie mit öffentlichen Schlüsseln, der Methoden zur Kennwortverarbeitung und der Verschlüsselung im Allgemeinen ist äußerst hilfreich.
Jldugger
quelle
Und selbst wenn Sie kein Skript (oder kein gutes Skript) erstellen können, ist es sehr wichtig zu erkennen, wann etwas automatisiert werden muss.
Ether
Was ist ein schnelles und einfaches Versionskontrollsystem für einen reinen Windows-Shop?
Jftuga
SVN? Ich meine, es scheint gut genug für diesen Idioten zu sein: codinghorror.com/blog/2008/04/…
jldugger
9

Ich würde anfangen mit:

  1. Wie man mehr als die grundlegendsten Skripte schreibt, egal in welcher Sprache. Automation ist dein Freund.
  2. Wie man einen Debugger ausführt / weiß, wie man Absturzberichte liest: Es macht das Herausfinden eines Absturzberichts und die Frage, was die Zwei zu viel leichter.
  3. Versionskontrolle - nicht nur für Code, sondern für alles, was es wert ist, eine Historie zu führen oder die Kontrolle zu ändern.
Chealion
quelle
7

Die Systemadministration programmiert einfach. Mit einem Konfigurationsmanagementsystem können Sie Ihre gesamte Infrastruktur als verteilte Maschine betrachten. Als Systemadministrator müssen Sie diese Maschine programmieren.

Kenne einen Texteditor. Normalerweise vi für Sysadmins, Emacs für Programmierer.

Wissen, wie man Skripte erstellt. Wählen Sie eine Skriptsprache. Perl ist ein Dauerbrenner, genau wie die Shell / Sed / Awk-Kombination. Ruby und Python können funktionieren, aber für viele Dinge sind Objekte das falsche Paradigma.

Wissen, wie man eine lesbare Dokumentation schreibt.

Versionskontrolle. Ausschlaggebend für die Verwaltung von Konfigurationsdateien und Prüfpfaden.

Lernen Sie, in Programmierbegriffen zu denken. Verstehen Sie prozedurale, objektorientierte und funktionale Programmierparadigmen. Diese dürfen nie verwendet werden, aber wenn Sie sie kennen, sind Sie unendlich produktiver.

Erfahren Sie, wie Sie einen Debugger (oder mehr) verwenden und protokollieren.

Erfahren Sie, wie Sie ein RDBMS verwenden. Es gibt viele Datenverarbeitungsanforderungen, die durch die korrekte Verwendung eines RDBMS vereinfacht werden können. Sogar die Möglichkeit, bei Bedarf zu einer DBA-Rolle zu wechseln, kann Wunder bewirken.

Vor der Bereitstellung testen. Siehe die Philosophie der testgetriebenen Entwicklung.

Paarprogrammierung ist gut. Lassen Sie jemanden über Ihre Schulter schauen, um zu lernen / beraten / korrigieren.

Lernen Sie, zumindest eine vorübergehende Vertrautheit mit einer Reihe von Sprachen zu haben. Lerne jedes Jahr eine neue Sprache.

Devdas
quelle
Zurück in der realen Welt ... habe ich noch keinen Systemadministrator getroffen, der irgendetwas davon macht (abgesehen vom Testen und Schreiben eines Dokuments). Vielleicht habe ich für die falschen Firmen gearbeitet!
PowerApp101
1
Dann ist deine Version der Realität scheiße. Jeder meiner Arbeiter bevorzugt vi (ich habe Emacs gelernt und habe keine Lust, diese Folter zweimal zu überstehen); Wir haben Hunderte von Perl-Skripten und ein Dutzend einmalige PHP-Websites für Supportzwecke. Wir führen Opsview / Nagios für die Überwachung aus. Dies ist eigentlich nur ein Formulartest, der fortlaufend ausgeführt wird - sofortiges Feedback, wenn Sie eine Änderung vornehmen. Trotzdem möchte ich mehr Versionskontrolle für Websites und Skripte sowie bessere Prüfpfade.
Jldugger
Ihr seid Unix-Administratoren? In der Windows-Welt ist vieles davon noch nicht in das Bewusstsein der Systemadministratoren gelangt. Glaub mir, ich würde es lieben, wenn es so wäre.
PowerApp101
Junge aus dem 20. Jahrhundert, wir haben unsere Windows-Administratoren dazu gebracht, dieses Zeug zu lernen. Sie sind noch nicht da, aber hier ist es besser als bei meinem Beitritt. Die größeren Probleme, mit denen wir jetzt konfrontiert sind, sind eher politische / Management-Probleme als die technischen Probleme, die wir hatten.
Devdas
Oh, und wir haben auch Windows-Entwickler, die eine Ahnung haben, also unterstützen sie diese Bemühungen tatsächlich.
Devdas
5
  • Wissen, wie man programmiert. Ja, das ist wichtig: Wie ein Kommentator sagte, wenn Sie es mehr als einmal tun, dann schreiben Sie ein Skript - und schreiben Sie es gut.
  • Kennen Sie die Tools, die in einer Standard-Betriebssysteminstallation enthalten sind. Für UNIX-Administratoren bedeutet dies Tools wie Korn Shell (ksh) und Perl und vi. Verlassen Sie sich nicht darauf, dass Emacs, Ruby, Tcl oder C-Shell vorhanden sind.
  • Kennen Sie das Netzwerk. Wie setzen sich Ethernet-Pakete zusammen? Wie sieht ein Paket aus? Was sind die unterschiedlichen Pakettypen? Lernen Sie Tools wie tcpdump, wireshark, snoop und andere kennen.
  • Schreiben Sie tragbaren Code. Wenn der Code unter Linux - und Tru64 - und Solaris - und OpenVMS - ausgeführt werden soll, schreiben Sie portablen Code. Auch wenn es nur unter zwei UNIX-Versionen läuft - machen Sie es portabel. Aber wenn es nicht tragbar sein muss, sollten Sie keine zusätzliche Zeit darauf verwenden.
  • Wissen, wo die Dokumentation ist. Für Perl bedeutet dies perldoc, Perl Mongers, perl.org usw. Für ksh bedeutet dies die Manpage und Ihre bevorzugten Korn-Shell-Bücher.
  • Dokument, Dokument, Dokument, Dokument! Dokumentieren Sie Ihren Code, erstellen Sie Manpages, erstellen Sie eine Inline-Perl-Dokumentation und was auch immer angemessen ist. Erklären Sie, wie Sie das Programm verwenden und warum Sie es so codiert haben.
  • Kennen Sie die Verpackungswerkzeuge Ihres Systems. Wissen, wie RPMs für Red Hat- oder HP-UX-Depots oder Solaris-Pakete erstellt werden: Auf diese Weise können Sie Pakete für Ihre Systeme erstellen und diese in den Installationsprozess integrieren.
Mei
quelle
3

Das Schreiben von Skripten ist wichtig, aber ich würde dem Rat folgen, dass das Wissen um einige "echte" Sprachen ein definitiver Bonus ist. Sie können beispielsweise mit dem Namespace .NET System.DirectoryServices einige sehr nützliche Dinge tun.

Maximus Minimus
quelle
3

Ich bin Programmierer und leitender Administrator / Integrator. Um dort zu arbeiten, wo ich arbeite, müssen Sie die folgenden Dinge wissen:

  • Wie man Shellskripte schreibt (POSIX, keine Bashisms), ein bisschen Perl, ein bisschen Python
  • Basic C (Single UNIX Spezifikation)
  • So installieren Sie eine Compiler-Toolkette
  • Erstellen von Bibliotheken und anderen OSS-Projekten aus dem Quellcode
  • Was ist Valgrind und wie kann es verwendet werden, um Speicherlecks zu erkennen?
  • So rollen Sie RPM- und DEB-Pakete
  • Während wir nicht benötigen es, ein wenig PHP und ein wenig LISP wird nicht weh tun

Die meisten Junior-Administratoren können sich einen unserer Programmierer ansehen und sagen (mit Autorität), ja, ich habe es korrekt installiert. Hier haben Sie ein Leck, weshalb der Code, den Sie gerade gepusht haben, kaputt ist. Oder "Nein, es ist nicht unsere Version von MySQL, sehen Sie sich Ihre Frage hier an ..."

Ich denke, wir sind ein bisschen anders, wenn wir einen begabten Administrator einstellen. Wir gehen davon aus, dass sie (irgendwann) den Weg zum Programmieren finden, auch wenn es nur darum geht, etwas zu hacken, mit dem wir so arbeiten, wie sie es brauchen .

Zusammenfassend kann gesagt werden, dass eine gute Rundung Sie niemals verletzen wird.

Tim Post
quelle
1

Vor vielen, vielen Jahren (Windows NT 3.1) habe ich als Programmierer angefangen, der sich auf das Schreiben von Diensten und sogar auf gelegentliche Gerätetreiber spezialisiert hat. So lernen Sie den Windows-Kernel sehr gut kennen. Mit der Zeit langweilte ich mich ein wenig mit der Programmierung und wechselte zum Netzwerkmanagement. Ich habe festgestellt, dass mein Hintergrund in der Programmierung immer wieder von unschätzbarem Wert ist.

Es ist nicht nur so, dass das Schreiben von VBScript-Skripten relativ schmerzlos ist. Wenn Sie wissen, wie die Eingeweide von Windows funktionieren und insbesondere wie IP funktioniert, können Sie ungerade Server- und Netzwerkprobleme in den Griff bekommen. Es ist auch eine Denkweise. Programmierer sind an Dokumentation und Versionskontrolle gewöhnt, und es erschreckt mich, wenn ich sehe, wie viele Windows-Administratoren einfach etwas ausprobieren, um zu sehen, ob es funktioniert.

Alles sehr gut, aber es ist kein nützlicher Rat, zehn Jahre als Programmierer zu arbeiten! Ich denke jedoch, dass es den meisten Systemadministratoren helfen würde, Erfahrung in der Programmierung in einer "harten" Sprache wie C ++ oder C # zu haben. Und wenn Sie zahme Programmierer in Ihrer Organisation haben, gehen Sie mit ihnen trinken!

John Rennie

John Rennie
quelle
1

Schlimme Dinge passieren, Ihr Code wird länger existieren, als Sie denken. Schlagen Sie ordnungsgemäß mit nützlichen Fehlermeldungen fehl. Die Festplatte, der RAM, die CPU, die Zeit usw. gehen zur Neige.

Seien Sie nicht so optimistisch, dass es in der Produktion viel zu oft vorkommt, dass einmal in einer Million eine seltsame Ausgabe erscheint.

Ronald Pottol
quelle
1

Bei all den Beschreibungen hier werde ich nicht sagen, dass ich ein Sysadmin bin. Aber die Tatsache, dass ich ein paar Windows / Linux-Server erstellt und verwaltet habe, muss ich zugeben:

  • Unter Linux ist Bash-Scripting ein Muss. Wenn Sie wissen, wie man es in Perl / awk / etc integriert, ist es besser. Ich stellte fest, dass viele Aufgaben dadurch einfacher wurden.

  • Zu wissen, wie man in C / C ++ programmiert, hilft sehr. Manchmal müssen Sie einen GNU-Quellcode (falls Sie einen verwenden) an Ihre Bedürfnisse anpassen, da ein GNU-Produkt nicht sicherstellt, dass Sie immer die Hilfe erhalten, die Sie rechtzeitig benötigen - und oftmals sind sie in C / C ++ geschrieben.

Mario Patty Fc
quelle
0
  • SQL - Alles funktioniert mit Datenbanken
  • Programmieren - Sprache spielt keine Rolle, solange Sie die Logik und den Prozess verstehen, die Sie lernen und an jede Sprache anpassen können.
  • Wie man CODE und ÄNDERUNGEN DOKUMENTIERT - dieser ist riesig. Wie oft sahen Sie sich schon eine Konfiguration an, um herauszufinden, warum zum Teufel jemand das getan hat und was sich darauf auswirkt, wenn wir sie zurücksetzen. Diese geht über alles hinaus, was Sie codieren oder in Skripten verwenden. Sie wird behandelt, wenn Sie Änderungen an den Firewall-Einstellungen vornehmen, um einen Randfall zu behandeln, wenn Benutzer X an einem Dienstagnachmittag, wenn es regnet, E-Mails von Domäne Y empfängt. Und vielleicht bist es nicht du, sondern der PJ, der beschließt, es zu tun und dich dann um 2 Uhr morgens in deinem Urlaub anzurufen, weil alles auf abscheuliche Weise kaputt gegangen ist.
  • Systemsprachen - Unter Windows sind dies Dinge wie Powershell und WMI, mit denen Ihre Skriptsprachen in einige ziemlich leistungsstarke Ressourcen eingebunden werden und auf einem PC alles Mögliche tun können. Unter Unix / Linux gibt es eigene Tools, über die ich nicht sprechen kann.
Shial
quelle
0

Das Wissen, wie Sie sich an Ihr LDAP binden und die erforderlichen Informationen in der Skriptsprache Ihrer Wahl abrufen können, ist der Schlüssel für alles, von der Fehlerbehebung bis hin zur Optimierung verschiedener Automatisierungstypen (Konto- und Ressourcenbereitstellung, intelligentere Überprüfung von Benutzer- oder Computerkonten).

Mag einfach erscheinen, aber ich habe viele Bread-n-Butter-Läden gesehen, in denen die Leute nicht glauben, dass sie eine solche Systemadministration benötigen. Viele Unternehmen geben viel Geld für umfangreiche administrative Tools aus, und soweit ich weiß, hätten 95% der Aufgaben, für die sie die Tools verwenden, mit ein paar Stunden Skripting erledigt werden können, wenn jemand das gewusst hätte oder gewusst hätte, wie TU es.

Damorg
quelle
0

Ich habe festgestellt, dass das Wissen über Bash-, Dos Batch- und Powershell-Skripte einem Systemadministrator das Framework bietet, mit dem er auf jedem gängigen System fast alles tun kann.

Piep Piep
quelle