Lernen Sie Python Control Flow und Loops, um Shell -Skripte zu schreiben und zu stimmen - Teil 2

Lernen Sie Python Control Flow und Loops, um Shell -Skripte zu schreiben und zu stimmen - Teil 2

Im vorherigen Artikel dieser Python -Serie haben wir eine kurze Einführung zu Python, seine Befehlszeilenschale und der Leerlauf.

Wir haben auch gezeigt, wie arithmetische Berechnungen durchgeführt werden, wie Sie Werte in Variablen speichern und diese Werte auf den Bildschirm zurückdrucken. Schließlich haben wir die Konzepte von Methoden und Eigenschaften im Kontext der objektorientierten Programmierung anhand eines praktischen Beispiels erläutert.

In diesem Leitfaden diskutieren wir den Steuerfluss (um verschiedene Aktionskurse auszuwählen, abhängig von den von einem Benutzer eingegebenen Informationen, dem Ergebnis einer Berechnung oder dem aktuellen Wert einer Variablen) und Schleifen (um sich wiederholende Aufgaben zu automatisieren) und dann anwenden Was wir bisher gelernt haben, ein einfaches Shell -Skript zu schreiben, das den Betriebssystemtyp, den Hostnamen, die Kernel -Version, die Version und den Maschinenhardware -Namen anzeigt.

Dieses Beispiel, obwohl grundlegend, hilft uns, zu veranschaulichen, wie wir nutzen können Python OopDie Funktionen zum Schreiben von Shell -Skripten leichter als die Verwendung regulärer Bash -Tools.

Mit anderen Worten, wir wollen von gehen

# Uname -snrvm 
Überprüfen Sie den Hostnamen des Linux

Zu

Überprüfen Sie den Linux -Hostnamen mithilfe des Python -Skripts

oder

Skript zum Überprüfen von Linux -Systeminformationen

Sieht hübsch aus, nicht wahr?? Lassen Sie uns die Ärmel hochkrempeln und es möglich machen.

Inhaltsverzeichnis

1
  • Lernen Sie den Kontrollfluss in Python
  • Lernen Sie Schleifen in Python
  • Python -Module
  • Python -Skript
      • Zusammenfassung

Lernen Sie den Kontrollfluss in Python

Wie wir bereits gesagt haben, Kontrollfluss Ermöglicht es uns, je nach Bedingung verschiedene Ergebnisse zu wählen. Die einfachste Implementierung in Python ist ein ansonsten Klausel.

Die grundlegende Syntax ist:

Wenn Bedingung: # Aktion 1 else: # Aktion 2 
  • Wenn die Bedingung zu true ausgewertet wird, wird der folgende Codeblock ausgeführt (dargestellt von durch # Aktion 1. Andernfalls wird der Code unter anderem ausgeführt.
  • Eine Bedingung kann jede Aussage sein, die entweder als wahr oder falsch bewertet werden kann.

Zum Beispiel:

1 < 3 # true firstName == "Gabriel" # true for me, false for anyone not named Gabriel 
  • Im ersten Beispiel haben wir zwei Werte verglichen, um festzustellen, ob einer größer als der andere ist.
  • Im zweiten Beispiel haben wir verglichen Vorname (eine Variable), um festzustellen, ob am aktuellen Ausführungspunkt ihr Wert identisch ist “Gabriel
  • Die Bedingung und die sonstige Aussage müssen von einem Dickdarm folgen (:) :)
  • Die Einklebung ist in Python wichtig. Linien mit identischer Einkerbung gelten als im selben Codeblock.

Bitte beachten Sie, dass die ansonsten Aussage ist nur eine der vielen Steuerstromwerkzeuge Erhältlich in Python. Wir haben es hier überprüft, da wir es später in unserem Skript verwenden werden. Sie können mehr über den Rest der Tools in den offiziellen Dokumenten erfahren.

Lernen Sie Schleifen in Python

Einfach ausgedrückt, a Schleife ist eine Folge von Anweisungen oder Anweisungen, die in der Reihenfolge ausgeführt werden, solange eine Bedingung wahr ist, oder einmal pro Element in einer Liste.

Die einfachste Schleife in Python wird von der dargestellt Für Schleife dass iteriert über die Elemente einer bestimmten Liste oder eine Zeichenfolge, die mit dem ersten Element beginnt und mit dem letzten endet.

Grundlegende Syntax:

für x in Beispiel: # Mach das 

Hier kann ein Beispiel entweder eine Liste oder eine Zeichenfolge sein. Wenn er erstere, die Variable benannt X repräsentiert jeden Element in der Liste; Wenn letzteres, X repräsentiert jedes Zeichen in der Zeichenfolge:

>>> Rockbänder = [] >>> Rockbänder.append ("Roxette") >>> Rockbänder.anhängen ("Guns n 'Roses") >>> Rockbänder.append ("u2") >>> für x in Rockbändern: print (x) oder >>> firstname = "gabriel" >>> für x in FirstName: print (x) 

Die Ausgabe der obigen Beispiele wird im folgenden Bild angezeigt:

Lernen Sie Schleifen in Python

Python -Module

Aus offensichtlichen Gründen muss es eine Möglichkeit geben, eine Abfolge von Python -Anweisungen und -aussagen in einer Datei zu speichern, die bei Bedarf aufgerufen werden kann.

Genau das ist ein Modul. Vor allem die Betriebssystem Das Modul bietet eine Schnittstelle zum zugrunde liegenden Betriebssystem und ermöglicht es uns, viele der Vorgänge auszuführen, die wir normalerweise in einer Befehlslinienaufforderung ausführen.

Als solche enthält es verschiedene Methoden und Eigenschaften, die so genannt werden können, wie wir im vorherigen Artikel erläutert haben. Wir müssen es jedoch in unserer Umgebung mit dem Schlüsselwort importieren:

>>> OS importieren 

Drucken wir das aktuelle Arbeitsverzeichnis:

>>> os.getCwd () 
Lernen Sie Python -Module

Lassen Sie uns nun all dies zusammenstellen (zusammen mit den im vorherigen Artikel diskutierten Konzepten), um das gewünschte Skript zu schreiben.

Python -Skript

Es wird als gute Praxis angesehen, ein Skript mit einer Erklärung zu starten, die den Zweck des Skripts, die Lizenzbegriffe, unter denen es veröffentlicht wird. Obwohl dies eher eine persönliche Präferenz ist, verleiht es unserer Arbeit eine berufliche Note.

Hier ist das Drehbuch, das die Ausgabe erzeugt, die wir oben in diesem Artikel gezeigt haben. Es wird stark kommentiert, damit Sie verstehen können, was passiert.

Nehmen Sie sich ein paar Minuten Zeit, um es durchzugehen, bevor Sie fortfahren. Beachten Sie, wie wir eine IF / sonst -Struktur verwenden, um festzustellen, ob die Länge jeder Feldunterschrift größer ist als der Wert des Feldes selbst.

Basierend auf dem Ergebnis verwenden wir leere Zeichen, um den Speicherplatz zwischen einer Feldunterschrift und dem nächsten zu füllen. Außerdem verwenden wir die richtige Anzahl von Strichen als Trennzeichen zwischen der Feldunterschrift und ihrem Wert unten.

#!/usr/bin/python3 # Ändern Sie die obige Zeile in #!/usr/bin/python Wenn Sie nicht Python 3 haben, installiert # Skriptname: Uname.PY # Zweck: Illustrieren Sie Pythons OOP -Funktionen, Shell -Skripte leichter zu schreiben # Lizenz: GPL v3 (http: // www.Gnu.org/lizenzen/gpl.html) # Copyright (c) 2016 Gabriel Alejandro Cánepa # Facebook / Skype / G+ / Twitter / Github: Gacanepa # E -Mail: Gacanepa (at) Google Mail (DOT) Com # Dieses Programm ist kostenlose Software: Sie können es neu verteilt und / oder ändern oder ändern oder ändern oder ändern oder ändern oder ändern oder ändern. # Es steht unter den Bestimmungen der GNU General Public Lizenz, wie sie von # The Free Software Foundation, entweder Version 3 der Lizenz oder # (nach Ihrer Option) jede spätere Version veröffentlicht wurden. # Dieses Programm wird in der Hoffnung verteilt, dass es nützlich sein wird, #, aber ohne Garantie; Ohne die implizite Garantie für die Handelsfähigkeit oder Fitness für einen bestimmten Zweck. Weitere Informationen finden Sie in der # GNU General Public Lizenz. # Sie sollten zusammen mit diesem Programm eine Kopie der GNU General Public Lizenz erhalten haben. Wenn nicht, siehe . # Revision History # Datum Version Autor Änderung Beschreibung # -------- ------- -------------- # 2016-05-28 1.0 Gabriel Cánepa Initial Version # Importieren Sie das Betriebssystemmodul OS # Die Ausgabe des Betriebssystems zuweisen.Uname () zur Systeminfo -Variable # OS.Uname () gibt ein 5-Saiten-Tupel zurück (Sysname, Knotenname, Version, Version, Maschine) # Dokumentation: https: // docs.Python.org/3.2/Bibliothek/Betriebssystem.html#modul-os systemInfo = os.uname () # Dies ist ein festes Array mit den gewünschten Bildunterschriften im Skriptausgabe Headers = ["Betriebssystem", "Hostname", "Release", "Version", "Maschine"] # Anfangswert der Indexvariablen. Es wird verwendet, um den # Index von SystemInfo und Header in jedem Schritt der Iteration zu definieren. Index = 0 # Anfangswert der Bildunterschrift Variable. caption = "" # Anfangswert der Werte variablen Werte = "" # Anfangswert der Separatoren Variablen -Separatoren = "" # Start der Schleife für Element in SystemInfo: if len (Element) < len(headers[index]): # A string containing dashes to the length of item[index] or headers[index] # To repeat a character(s), enclose it within quotes followed # by the star sign (*) and the desired number of times. separators = separators + "-" * len(headers[index]) + " " caption = caption + headers[index] + " " values = values + systemInfo[index] + " " * (len(headers[index]) - len(item)) + " " else: separators = separators + "-" * len(item) + " " caption = caption + headers[index] + " " * (len(item) - len(headers[index]) + 1) values = values + item + " " # Increment the value of index by 1 index = index + 1 # End of the loop # Print the variable named caption converted to uppercase print(caption.upper()) # Print separators print(separators) # Print values (items in systemInfo) print(values) # INSTRUCTIONS: # 1) Save the script as uname.py (or another name of your choosing) and give it execute permissions: # chmod +x uname.py # 2) Execute it: # ./uname.py 

Sobald Sie das obige Skript in einer Datei gespeichert haben, geben Sie die Ausführungsberechtigungen und führen Sie es wie unten im Code aus:

# Chmod +X Uname.PY # ./dein Name.py 

Wenn Sie den folgenden Fehler erhalten, während Sie versuchen, das Skript auszuführen:

-Bash: ./dein Name.PY:/usr/bin/python3: schlechter Interpreter: Keine solche Datei oder Verzeichnis 

Es bedeutet, dass Sie nicht haben Python 3 Eingerichtet. Wenn dies der Fall ist, können Sie das Paket entweder installieren oder die Interpreter -Linie ersetzen (Achten Sie besonders aufmerksam und seien Sie sehr vorsichtig, wenn Sie die Schritte zur Aktualisierung der symbolischen Links zu den Python -Binärdateien, wie im vorherigen Artikel beschrieben, aktualisiert werden):

#!/usr/bin/python3 

mit

#!/usr/bin/python 

Dies führt zu der installierten Version von Python 2 um stattdessen das Skript auszuführen.

Notiz: Dieses Skript wurde beide erfolgreich getestet in Python 2.X Und 3.X.

Obwohl etwas rudimentär, können Sie sich dieses Skript als Python -Modul vorstellen. Dies bedeutet, dass Sie es im Leerlauf öffnen können (Datei → Öffnen Sie… → Datei auswählen):

Python im Leerlauf öffnen

Ein neues Fenster wird mit dem Inhalt der Datei geöffnet. Dann geh zu Rennen → Lauf Modul (oder einfach drücken F5). Die Ausgabe des Skripts wird in der ursprünglichen Shell angezeigt:

Führen Sie das Python -Skript aus

Wenn Sie dieselben Ergebnisse mit einem Skript erhalten möchten, das nur in geschrieben wurde Verprügeln, Sie müssten eine Kombination aus awk, sed und auf komplexe Methoden zum Speichern und Abrufen von Elementen in einer Liste verwenden (ganz zu schweigen von der Verwendung von TR, um Kleinbuchstaben in Großbuchstaben umzuwandeln).

Zusätzlich, Python bietet eine Portabilität, da alle Linux -Systeme mit mindestens einer Python -Version versandt werden (entweder 2.X oder 3.X, manchmal beides). Wenn Sie sich auf eine Shell verlassen müssen, um dasselbe Ziel zu erreichen, müssten Sie verschiedene Versionen des Skripts basierend auf der Shell schreiben.

Dies zeigt, dass objektorientierte Programmierfunktionen starke Verbündete von Systemadministratoren werden können.

Notiz: Sie können dieses Python -Skript (und andere) in einem meiner Github -Repositories finden.

Zusammenfassung

In diesem Artikel haben wir die Konzepte des Kontrollflusss, der Schleifen/der Iteration und der Module in Python überprüft. Wir haben gezeigt, wie man OOP -Methoden und Eigenschaften in Python nutzt, um ansonsten komplexe Shell -Skripte zu vereinfachen.

Haben Sie noch andere Ideen, die Sie testen möchten?? Schreiben Sie Ihre eigenen Python -Skripte und teilen Sie uns mit, ob Sie Fragen haben. Zögern Sie nicht, uns eine Zeile mit dem folgenden Kommentarformular mit dem Kommentarformular fallen zu lassen, und wir werden uns so schnell wie möglich bei Ihnen melden.