Verwenden von Shell Scripting, um Linux -Systemwartungsaufgaben zu automatisieren - Teil 4

Verwenden von Shell Scripting, um Linux -Systemwartungsaufgaben zu automatisieren - Teil 4

Vor einiger Zeit habe ich gelesen, dass eines der Unterscheidungsmerkmale eines effektiven Systemadministrators / -ingenieurs Faulheit ist. Es schien zunächst ein wenig widersprüchlich, aber der Autor erklärte dann, warum:

RHCE -Serie: Automatisieren Sie Linux -Systemwartungsaufgaben - Teil 4

Wenn ein Sysadmin die meiste Zeit damit verbringt, Probleme zu lösen und sich wiederholende Aufgaben zu erledigen, können Sie vermuten, dass er oder sie nicht ganz richtig macht. Mit anderen Worten, ein effektiver Systemadministrator / -ingenieur sollte einen Plan entwickeln, um sich wiederholende Aufgaben mit so weniger Maßnahmen für seinen Teil wie möglich auszuführen und Probleme mit der Verwendung vorhersehen,

Zum Beispiel die in Teil 3 überprüften Tools - Überwachung von Systemaktivitätsberichten mit Linux -Toolsets dieser Serie. Obwohl er oder sie nicht viel zu tun scheint, liegt es daran.

Was ist ein Shell -Skript?

In wenigen Worten ist ein Shell -Skript nichts mehr und nichts weniger als ein Programm, das von einer Shell Schritt für Schritt ausgeführt wird. Dies ist ein weiteres Programm, das eine Schnittstellenschicht zwischen dem Linux -Kernel und dem Endbenutzer liefert.

Standardmäßig wird die für Benutzerkonten verwendete Shell in verwendet Rhel 7 ist Bash (/Bin/Bash). Wenn Sie eine detaillierte Beschreibung und einen historischen Hintergrund wünschen, können Sie sich auf diesen Wikipedia -Artikel beziehen.

Um mehr über die enormen Funktionen dieser Shell zu erfahren Mann Seite, Das wird im PDF -Format unter (Bash -Befehle) heruntergeladen. Abgesehen davon wird angenommen, dass Sie mit Linux -Befehlen vertraut sind (wenn nicht, rate ich Ihnen dringend, einen Leitfaden von Neulingen zu Sysadmin Artikel in durchzugehen Tecmint.com vor fortfahren). Jetzt fangen wir an.

Schreiben eines Skripts zum Anzeigen von Systeminformationen

Lassen Sie uns für unsere Bequemlichkeit ein Verzeichnis erstellen, um unsere Shell -Skripte zu speichern:

# MKDIR -Skripte # CD -Skripte 

Und öffnen Sie eine neue Textdatei mit dem Namen Systeminformationen.Sch Mit Ihrem bevorzugten Texteditor. Wir werden zunächst ein paar Kommentare oben und einige Befehle danach einfügen:

#!/bin/bash # Beispielskript für Teil 4 der RHCE -Serie # Dieses Skript gibt den folgenden Systeminformationen zurück: # -Hostname Informationen: echo -e "\ e [31; 43m ***** Hostname -Informationen ***** \ e [0M "hostnamectl echo" "" # -File -System Speicherplatznutzung: echo -e "\ e [31; 43m ***** Dateisystem -Speicherplatznutzung ***** \ e [0M "df -h echo" " # -free und verwendete Speicher im System: echo -e" \ e [31; 43m ***** Freier und gebrauchter Speicher ***** \ e [0M "Free Echo" " # -System -Verfügbarkeit und Lade: echo -e" \ e [31; 43m ***** Systemoptimierung und Last ***** \ e [0M "UPTIME ECHO" " # -Logged -in Benutzer: echo -e" \ e [31; 43m ***** Derzeit angemeldete Benutzer ***** \ e [0M ", der" " # -Top 5 Prozesse in Bezug Top 5 speicherkonsumierende Prozesse ***** \ e [0M "ps -eo%mem,%cpu, cpu, c -sort = -%mem | head -n 6 echo" echo -e "\ e [1; 32mdone.\ e [0M " 

Geben Sie als Nächstes das Skript aus, die Berechtigungen ausführen:

# chmod +x system_info.Sch 

und leiten Sie es:

./Systeminformationen.Sch 

Beachten Sie, dass die Header jedes Abschnitts in Farbe für eine bessere Visualisierung angezeigt werden:

Serverüberwachungs -Shell -Skript

Diese Funktionalität wird durch diesen Befehl bereitgestellt:

echo -e "\ e [Color1; color2m\ e [0M " 

Wo Color1 Und Color2 sind die Vordergrund- und Hintergrundfarben (weitere Informationen und Optionen werden in diesem Eintrag vom Arch Linux Wiki erläutert) und ist die Zeichenfolge, die Sie in Farbe anzeigen möchten.

Aufgaben automatisieren

Die Aufgaben, die Sie möglicherweise automatisieren müssen, können von Fall zu Fall variieren. Daher können wir möglicherweise nicht alle möglichen Szenarien in einem einzigen Artikel abdecken, aber wir werden drei klassische Aufgaben vorlegen, die mithilfe von Shell Scripting automatisiert werden können:

1) Aktualisieren Sie die lokale Dateidatenbank, 2) Dateien finden (alternativ löschen) 777 Berechtigungen und 3) Warnung, wenn die Verwendung von Dateisysteme eine definierte Grenze übertrifft.

Lassen Sie uns eine Datei namens erstellen auto_tasks.Sch In unserem Skript -Verzeichnis mit dem folgenden Inhalt:

#!/Bin/Bash # Beispielskript zum automatischen Automatisieren von Aufgaben: # -update Local Datei Datenbank: echo -e "\ e [4; 32mAktualisieren der lokalen Dateidatenbank\ e [0m "aktualisiert, wenn [$? == 0]; dann echo "Die lokale Dateidatenbank wurde korrekt aktualisiert."else echo" Die lokale Dateidatenbank wurde nicht korrekt aktualisiert."fi echo" " # -Find und / oder löschen Dateien mit 777 Berechtigungen. echo -e "\ e [4; 32mAuf der Suche nach Dateien mit 777 Berechtigungen\ e [0M " # Aktivieren Sie eine der beiden Optionen (kommentieren Sie die andere Zeile), aber nicht beides. # Option 1: Dateien ohne Bestätigung löschen. Nimmt die GNU -Version von Find an. #Find -Typ F -PERM 0777 -Delete # Option 2: Bitten Sie um Bestätigung, bevor Sie Dateien löschen. Tragbarer über Systeme hinweg mehr. find -typ f -perm 0777 -exec rm -i  +; echo "" # -alert Wenn die Verwendung von Dateisystemen eine definierte Grenze echo -e "\ e [4; 32m) übertrifftÜberprüfung der Dateisystemnutzung\ e [0M "Threshold = 30 Während der Lesen von Zeile; # Diese Variable speichert den Dateisystempfad als String -Dateisystem = $ (echo $ line | awk 'drucken $ 1') # Diese Variable speichert den Prozentsatz (xx% ) Prozentsatz = $ (echo $ line | awk 'drucken $ 5') # Prozentsatz ohne das % Zeichen verwenden. Verwendung = $ Prozentsatz%? if [$ nutzung -& gt $ threshold]; dann echo "Der verbleibende verfügbare Speicherplatz in $ Dateisystem ist kritisch niedrig. Gebraucht: $ prozentual "fi fertiggestellt < <(df -h --total | grep -vi filesystem) 

Bitte beachten Sie, dass zwischen den beiden einen Platz besteht < Zeichen in der letzten Zeile des Skripts.

Shell -Skript, um 777 Berechtigungen zu finden

Mit Cron

Um eine Effizienz noch einen Schritt weiter zu gehen, möchten Sie nicht vor Ihrem Computer sitzen und diese Skripte manuell ausführen. Vielmehr werden Sie verwenden Cron Um diese Aufgaben regelmäßig auszuführen und die Ergebnisse per E -Mail an eine vordefinierte Liste von Empfängern zu senden oder in eine Datei zu speichern, die mit einem Webbrowser angezeigt werden kann.

Das folgende Skript (Dateisystem_USAGE.sh) wird das bekannte leiten df -h Befehl, formatieren Sie die Ausgabe in eine HTML -Tabelle und speichern Sie sie in der Bericht.html Datei:

#!/Bin/Bash # Beispielskript Um die Erstellung eines HTML -Berichts mit Shell Scripting # Web -Verzeichnis web_dir =/var/www/html # ein wenig CSS und Tabellenlayout zu demonstrieren, damit der Bericht etwas schöner aussieht. "   .Titulo Schriftgröße: 1EM; Farbe weiß; Hintergrund:#0863ce; Polsterung: 0.1em 0.2em; Tabelle Border-Collapse: Zusammenbruch;  table, td, th border: 1px fest schwarz;  "> $ Web_dir/report.HTML # Hostname anzeigen und oben im HTML Body Host = $ (Hostname) Echo "Dateisystem verwendet" für Host $ Host
Letzte Aktualisierung: $ (Datum)

">> $ web_dir/report.HTML # Lesen Sie die Ausgabe der DF -H -Zeile für Zeile während der Lesenzeile; Echo machen "">> $ web_dir/report.html fertig < <(df -h | grep -vi filesystem) echo "
Dateisystem Größe Verwenden %
">> $ web_dir/report.html echo $ line | awk 'print $ 1' >> $ web_dir/report.HTML Echo "">> $ web_dir/report.html echo $ line | awk 'print $ 2' >> $ web_dir/melden.HTML Echo "">> $ web_dir/report.html echo $ line | awk 'print $ 5' >> $ web_dir/melden.HTML Echo "
">> $ web_dir/report.html

In unserer Rhel 7 Server (192.168.0.18), Dies sieht wie folgt aus:

Serverüberwachungsbericht

Sie können diesen Bericht so viele Informationen hinzufügen, wie Sie möchten. Das Drehbuch jeden Tag um ausführen 13:30 Uhr, Fügen Sie den folgenden Crontab -Eintrag hinzu:

30 13 * * */root/scripts/filesystem_usage.Sch 

Zusammenfassung

Sie werden höchstwahrscheinlich an mehrere andere Aufgaben denken, die Sie automatisieren möchten oder müssen. Wie Sie sehen können, vereinfacht die Verwendung von Shell -Skripten diesen Aufwand stark. Fühlen Sie sich frei, uns wissen zu lassen, ob Sie diesen Artikel hilfreich finden, und zögern Sie nicht, Ihre eigenen Ideen oder Kommentare über das folgende Formular hinzuzufügen.