Frage Welche Programmierer-Dinge sollte jeder Systemadministrator wissen?


Inspiriert von diese FrageIch frage das Gegenteil: Wie viel Programmierung müssen Systemadministratoren wissen? Genauer gesagt, welche Programmiertools sind für einen Systemadministrator nützlich?


20
2018-05-22 07:13


Ursprung


Sollte das nicht eine SO Frage sein? Ich denke, es wurde schon dort gefragt. - Tim Matthews
stackoverflow.com/questions/870907/... - Tim Matthews
Ja, aber wie bereits zu dieser Frage festgestellt wurde, gibt es zwei sehr unterschiedliche Gemeinschaften in SF und SO. Ich denke, es wäre interessant zu sehen, welche Programmierer-Dinge Systemadministratoren Denken Sie, dass Sysadmins wissen sollten, anstatt, was Programmierer Programmierer denken, dass Systemadministratoren wissen sollten. - Tim


Antworten:


  • Versionskontrolle. In der Lage sein, Patches zu generieren, zu lesen und anzuwenden. Erfahren Sie, wie Sie ein Versionskontrollsystem verwenden, das Repository-weite Versionen präsentiert und warum Sie eines möchten. Wissen, wie man beschreibende Änderungsprotokolle schreibt und warum man sie will. Erfahren Sie, wie Sie die Protokolle eines Repositorys nach Schlüsselwörtern und Zeitrahmen durchsuchen.
  • Skripting. Mach etwas einmal und sei auf deinem Weg. Mach es zweimal oder öfter, mach es einmal und schreibe dann ein Skript.
  • Debuggen. Erfahren Sie, wie Sie einen Stack-Trace lesen und relevante Fehler Ihrem Software-Support-Kontakt melden. Den Fehler zu finden ist nett und hilfreich, aber zu wissen Wie um es zu beheben, kann eine Menge in das Lesen des Codes investieren. Mach den Teil, der dir leicht fällt, und lass sie den Teil tun, der ihnen leicht fällt.
  • Testen. Überwachen Sie kontinuierlich und protokollieren Sie Fehler. In Verbindung mit Versionskontrolle und Tests haben Sie eine gute Vorstellung davon, 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 Dienste wie lange davon betroffen sein können. Lassen Sie Change Management nicht zu politischen Kämpfen der bürokratischen Macht degradieren.
  • Studieren Kryptographie. Ein moderner Systemadministrator ist verantwortlich für Netzwerkressourcen; Sicherheit als letzten Schritt hinzuzufügen, ist irgendwo zwischen unmöglich und sehr teuer. Das Verständnis der Kryptografie mit öffentlichen Schlüsseln, der Passwort-Handhabung und der Verschlüsselung im Allgemeinen wird äußerst wertvoll sein.

29
2018-05-22 07:26



Und selbst wenn Sie nicht skripten (oder gut scripten) 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


Ich würde anfangen mit:

  1. Wie man mehr als die grundlegendsten Skripte schreibt, egal in welcher Sprache. Automatisierung ist dein Freund.
  2. Wie man einen Debugger ausführt / weiß, wie man einen Crash-Report liest: Er macht einen Crash-Report heraus und wer fragt, was der Deuce viel einfacher macht.
  3. Versionskontrolle - nicht nur für Code, sondern für alles, was es wert ist, einen Verlauf zu behalten oder die Kontrolle zu ändern.

9





Die Systemverwaltung ist nur Programmieren. Ein Konfigurationsmanagementsystem ermöglicht es Ihnen, Ihre gesamte Infrastruktur als verteilten Rechner zu sehen. Als Systemadministrator besteht Ihre Aufgabe darin, diesen Computer zu programmieren.

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

Wissen, wie man skriptet. Wählen Sie eine Skriptsprache. Perl ist ein Dauerbrenner, ebenso 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 lesbare Dokumentation schreibt.

Versionskontrolle. Entscheidend für die Pflege von Konfigurationsdateien und Audit Trails.

Lernen Sie in Programmierbegriffen zu denken. Verstehen Sie prozedurale, objektorientierte und funktionale Programmierparadigmen. Diese werden vielleicht nie benutzt, aber sie zu kennen macht dich unendlich produktiver.

Lernen Sie, einen Debugger (oder mehr) zu verwenden und zu protokollieren.

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

Testen Sie vor der Bereitstellung. Siehe die Test-getriebene Entwicklungsphilosophie.

Pair-Programmierung ist gut. Lassen Sie jemanden über Ihre Schulter wachen, um zu lernen / zu beraten / zu korrigieren.

Lerne mindestens eine Vertrautheit mit einer Reihe von Sprachen zu haben. Erlernen Sie jedes Jahr eine neue Sprache.


7



Zurück in der realen Welt ... Ich muss noch einen Systemadministrator kennenlernen, der das tut (abgesehen von Tests und dem Schreiben von ein bisschen Doc). Vielleicht habe ich für die falschen Firmen gearbeitet! - PowerApp101
Dann ist deine Version der Realität nervtötend. Jeder meiner Arbeiter bevorzugt vi (Ich habe Emacs gelernt und habe keine Lust, diese Folter zweimal durchzulaufen); Wir haben Hunderte von Perl-Skripten und ein Dutzend einmalige PHP-Websites für Support-Zwecke. Wir führen Opsview / nagios für das Monitoring aus, was wirklich nur ein Formtest ist, der kontinuierlich ausgeführt wird - sofortiges Feedback, wenn Sie eine Änderung vornehmen. Dennoch möchte ich mehr Versionskontrolle für Websites und Skripts und bessere Audit-Trails einrichten. - jldugger
Ihr seid Unix Admins? In der Windows-Welt muss eine Menge dieser Dinge noch in das Bewusstsein von sys-Admins versickern. Glauben Sie mir, ich würde es lieben, wenn es so wäre. - PowerApp101
20. Jahrhundert Junge, wir haben unsere Windows Admins dazu gedrängt, dieses Zeug zu lernen. Sie sind noch nicht da, aber hier ist es besser als damals, als ich beigetreten bin. Die größeren Probleme, vor denen wir jetzt stehen, sind eher politische / Management-Probleme als die technischen Probleme, die wir hatten. - Devdas
Oh, und wir haben auch Windows-Entwickler mit einem Hinweis, also unterstützen sie solche Bemühungen tatsächlich. - Devdas


  • Wissen, wie man programmiert.  Ja, das ist wichtig: Wie ein Kommentator sagte, wenn du es mehr als einmal tust, schreibe ein Skript - und schreibe 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 auf Emacs oder Ruby oder Tcl oder C-Shell vorhanden sein.
  • Kenne das Netzwerk. Wie werden Ethernet-Pakete zusammengesetzt? Wie sieht ein Paket aus? Was sind die unterschiedlichen Pakettypen? Lernen Sie Tools wie tcpdump, wireshark, snoop und andere kennen.
  • Schreibe portablen Code.  Wenn der Code unter Linux - und Tru64 - und Solaris - und OpenVMS ausgeführt wird - schreiben Sie portablen Code. Selbst wenn es nur unter zwei Versionen von UNIX läuft - mach es portabel. Aber wenn es nicht tragbar sein muss, sollte man keine zusätzliche Zeit darauf verwenden.
  • Sch 100 100 100 100 100 sch 100 100 100 sch 100 100 100 sch sch sch 100 sch 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 sch dieser Für Perl bedeutet dies perldoc, Perl Mongers, perl.org, etc. Für ksh bedeutet dies die man-Seite und Ihre Lieblings-Korn-Shell-Bücher.
  • Dokument, Dokument, Dokument, Dokument! Dokumentieren Sie Ihren Code, erstellen Sie Manpages, erstellen Sie eine Inline-Perl-Dokumentation und was immer sonst noch angebracht ist. Erklären Sie, wie Sie das Programm verwenden und warum Sie es so codiert haben.
  • Kennen Sie die Verpackungstools Ihres Systems. Erfahren Sie, wie Sie RPMs für Red Hat- oder HP-UX-Depots oder Solaris-Pakete erstellen: So können Sie Pakete für Ihre Systeme erstellen und diese somit in den Installationsprozess integrieren.

5





Scripting ist essentiell, aber ich würde den Hinweis ablehnen, dass das Wissen um einige "echte" Sprachen ein definitiver Bonus ist. Sie können zum Beispiel sehr nützliche Dinge mit dem Namespace .NET System.DirectoryServices tun.


3





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

  • Wie schreibe ich Shell-Skripte (POSIX, no Bashisms), ein wenig Perl, ein wenig Python
  • Basic C (einzelne UNIX-Spezifikation)
  • Wie installiere ich eine Compiler-Werkzeugkette?
  • Wie man Bibliotheken und andere OSS-Projekte aus der Quelle erstellt
  • Was Valgrind ist und wie man es benutzt, um Speicherlecks zu erkennen
  • Wie man RPM- und .deb-Pakete aufruft
  • Während wir es nicht tun benötigen es, ein wenig PHP und ein wenig LISP wird nicht weh tun

Die meisten Junior Admins können einen unserer Programmierer sehen und sagen (mit Autorität), ja, ich habe es richtig installiert, hier ist ein Leck, weshalb der Code, den du gerade gedrückt hast, kaputt ist. Oder "Nein, es ist nicht unsere Version von MySQL, schau dir deine Anfrage hier an ... "

Ich denke, wir sind etwas anders, wenn wir einen begabten Administrator beauftragen. Wir erwarten auf halbem Weg, dass sie (irgendwann) ihren Weg zur Programmierung finden, selbst wenn sie nur etwas hacken, das wir benutzen, um so zu arbeiten, wie sie es braucht .

Zusammenfassend ist es gut abgerundet noch nie werde dich verletzen.


3





Vor vielen, vielen Jahren (eigentlich Windows NT 3.1) begann ich als Programmierer, der sich auf Schreibdienste und sogar auf gelegentliche Gerätetreiber spezialisiert hat. Das heißt, Sie lernen den Windows-Kernel sehr gut kennen. Mit der Zeit wurde mir die Programmierung etwas langweilig und ich wechselte zum Netzwerkmanagement. Ich habe festgestellt, dass mein Hintergrund in der Programmierung immer wieder immens wertvoll war.

Das Schreiben von VBScript-Skripten ist nicht nur relativ schmerzlos. Zu wissen, wie die Eingeweide von Windows funktionieren und vor allem, wie IP funktioniert, hilft sehr bei der Beseitigung von seltsamen Server- und Netzwerkproblemen. Auch es ist eine Denkweise. Programmierer sind an die Dokumentation und Versionskontrolle gewöhnt, und es entsetzt mich, zu sehen, wie viele Windows-Administratoren einfach etwas ausprobieren, um zu sehen, ob es funktioniert und sich darum zu kümmern, das Chaos danach zu entwirren.

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

John Rennie


1





Schlechte Dinge passieren, dein Code wird länger da sein als du denkst. Fehlerhaft, mit nützlichen Fehlermeldungen. Sie werden von Festplatte, RAM, CPU, Zeit usw. ausgehen, damit umzugehen.

Seien Sie nicht so optimistisch, dass dieses seltsame Phänomen einmal in einer Million viel zu oft in der Produktion passiert.


1





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

  • In Linux ist Bash-Scripting ein Muss - wenn Sie wissen, wie man es mit Perl / Awk / etc integriert, ist es besser. Ich habe festgestellt, dass viele Aufgaben einfacher wurden, wenn man sie benutzt.

  • Das Programmieren in C / C ++ hilft sehr. Manchmal müssen Sie einen GNU-Quellcode ändern (wenn Sie einen verwenden), um Ihren Anforderungen zu entsprechen, weil ein GNU-Produkt nicht garantiert, dass Sie immer die Hilfe bekommen, die Sie rechtzeitig benötigen - und oft in C / C ++ geschrieben sind.


1





  • SQL - Alles funktioniert mit Datenbanken
  • Programmierung - Sprache spielt keine Rolle, solange Sie die Logik und den Prozess verstehen, den Sie lernen und an jede Sprache anpassen können.
  • Wie DOKUMENTENCODE und ÄNDERUNGEN - dieser ist riesig. Wie oft warst du schon dabei, eine Konfiguration zu betrachten, um herauszufinden, warum zum Teufel jemand das getan hat und was es beeinflussen wird, wenn wir es zurückwechseln. Diese Version geht über alles hinaus, was Sie programmieren oder scripten. Dies deckt Sie ab, wenn Sie Änderungen in den Firewalleinstellungen vornehmen, um einen Randfall zu behandeln, wenn Benutzer X an einem Dienstag Nachmittag, wenn es regnet, E-Mails von Domäne Y erhält. Und vielleicht bist du es nicht, es könnte der PJ sein, der sich dazu entschließt, es zu tun und dann um 2 Uhr morgens in deinem Urlaub anrufen muss, weil alles auf eine abscheuliche Weise zerbrach.
  • Systemsprachen - Unter Windows sind dies Dinge wie Powershell und WMI, die Ihre Skriptsprachen in einige ziemlich mächtige Ressourcen einbinden und alles auf einem PC erledigen. Unix / Linux hat ihre eigenen Werkzeuge, über die ich nicht sprechen kann.

0





Zu wissen, wie Sie sich an Ihr LDAP binden und die benötigten Informationen in Ihrer bevorzugten Skriptsprache abrufen können, ist von der Fehlersuche bis zur Automatisierung verschiedener Arten der Automatisierung (Konto- und Ressourcenbereitstellung, intelligentere Überprüfung von Benutzer- oder Computerkonten) von entscheidender Bedeutung.

Mag grundlegend scheinen, aber ich habe viele Brot-N-Butter-Geschäfte gesehen, wo Leute denken, dass sie keine Notwendigkeit für diese Art von Systemverwaltung haben. Viele Orte geben große Mengen an administrativen Tools aus und, soweit ich das beurteilen kann, hätten 95% von dem, wofür sie die Tools verwenden, mit ein paar Stunden Scripting erledigt werden können, wenn irgendjemand das wusste oder wusste TU es.


0