Inhaltsverzeichnis
Python Als Programmiersprache ist sie sehr mächtig, ermöglicht es uns, Aktionen auszuführen und sehr wichtige Ergebnisse zu erzielen, wenn wir die verschiedenen Eigenschaften unserer Ausrüstung manipulieren IP-Adressen, Ports und Sockets. Jeder ermöglicht es uns, einen anderen und ebenso wichtigen Punkt innerhalb der Netzwerkstruktur zu erreichen.Eine der Umgebungen, in denen Python an Stärke gewonnen hat, liegt in der Entwicklung von Programmen für das Netzwerk, da dank seiner Klassen von Socket-Handling, wir können die Netzwerkstruktur zu unserem Vorteil nutzen, diese Struktur kann lokal oder durchgängig sein Internet, die uns eine große Vielseitigkeit und Kraft bei den Programmen gibt, die wir durchführen können.
Die Socket-BibliothekDies ist der erste Halt, den wir machen müssen, diese Bibliothek bietet Funktionen, die auf Lektionen und in Instanzen, was bedeutet, dass wir einige Dinge verwenden können, ohne Objekte zu erstellen.
Dies mag für uns keinen großen Unterschied machen, aber die Möglichkeit, ohne Instanzen zu arbeiten, eröffnet einige Möglichkeiten, z.
Diese erste Übung ist sehr interessant, da wir von der Kommandokonsole unseres Systems aus in der Lage sein werden, Informationen von unserer eigenen Ausrüstung zu erhalten mit Python und ein paar Zeilen Code.
AnforderungenAls Voraussetzung müssen wir den Dolmetscher von . installiert haben Python in unserer Maschine, um die Beispiele ausführen zu können, die wir in diesem Tutorial zeigen werden.
Der von uns geschriebene Code läuft auf dem Version 2.7 von Python Daher können einige Änderungen erforderlich sein, wenn eine andere Version verwendet wird. Ein Tool, das uns bei Versionskompatibilitätsproblemen helfen kann, ist Virtualenv, mit dem wir verschiedene Versionen von . ausführen können Python in unabhängigen Installationen, ohne dass dafür komplexe Konfigurationen erforderlich sind.
Als erstes öffnen wir unsere Kommandokonsole und gehen in die Interaktives Python-TerminalUm dies zu tun, müssen wir, wenn wir die Sprache korrekt installiert haben, nur das Wort Python platzieren und haben Zugriff darauf:
Diese Konsole ist sehr nützlich zum Testen von Anweisungen, wie wir im Beispiel unten sehen werden, aber für Anwendungen, bei denen wir den von uns erstellten Code behalten müssen, ist sie möglicherweise nicht die beste Alternative, wie wir später im Tutorial sehen werden.
Zuerst müssen wir unsere Bibliothek importieren, dazu verwenden wir den folgenden Befehl:
Steckdose importieren
Dann können wir beginnen, die gewünschten Informationen zu sammeln, dazu müssen wir nur wissen, wonach wir suchen, zum Beispiel um den Namen unseres Teams zu erhalten, müssen wir einfach Folgendes schreiben:
computer_name = socket.gethostname ()
Dann können wir die Variable auf dem Bildschirm ausgeben, um ihren Inhalt zu sehen, dazu rufen wir einfach die Methode auf drucken:
print "Der Computername ist:% s"% Computername
Dies sollte uns in unserem interaktiven Terminal ein Ergebnis wie das folgende geben:
Wie wir sehen konnten, ist es recht einfach, die Bibliothek zu verwalten Steckdose und Operationen von der Konsole aus Python, jetzt können wir zum nächsten Punkt gehen und zwar sofort die IP-Adresse beziehen, denn wir müssen nur etwas Ähnliches tun, nur dass wir die Variable mit dem Namen des Computers verwenden, die wir ursprünglich erfasst haben und wir werden folgendes tun:
host_address = socket.gethostbyname (host_name)
Damit geben wir die vorherige Variable aus:
print "Die IP ist:% s"% computer_address
Mal sehen, wie das in unserem Terminal aussieht:
Wie wir sehen, haben wir ohne großen Aufwand äußerst nützliche Informationen erhalten, aber das ist nichts im Vergleich zu dem, was wir tun können.
Das Obige ist ziemlich praktisch, aber in seiner Präsentation nicht sehr nützlich, da wir nicht häufig darauf zugreifen können, sondern Zeile für Zeile eingeben müssen. Um dieses Problem zu vermeiden, erstellen wir ein echtes Programm, das uns die Informationen, die uns bisher bekannt sind.
Dazu benötigen wir einen Nur-Text-Editor, wir empfehlen SublimeText 2 und einen Ort, an dem wir unser Programm hosten können und der in Reichweite unserer Installation von ist Python mit den entsprechenden Berechtigungen.
Um eine Verbesserung zu erreichen, werden wir eine Funktion erstellen, die es uns ermöglicht, unsere Anweisungen wiederholt aufzurufen, ohne jedes Mal den gesamten Code schreiben zu müssen, dann in unserer neuen Datei, die wir aufrufen team_information.py Wir werden die folgenden Inhalte platzieren:
#! / usr / bin / env Python import socket def get computer_info (): computer_name = socket.gethostname () computer_address = socket.gethostbyname (computer_name) print "der Computername ist:% s"% computer_name print "Die IP ist: % s "% computer_address if __name__ == '__main__': get_team_info ()
Es ist sehr wichtig, dass wir die Tabs und Einrückungen des Codes respektieren, da dies die einzige Möglichkeit ist, Python kann Blockänderungen erkennen, wenn wir verwenden Erhabener Text Wir müssen uns keine Sorgen machen, da wir die Einrückungen unseres Codes visuell überprüfen können:
Jetzt in unserer Systembefehlskonsole und ohne Eingabe des de Python Wir können unsere Datei aufrufen und wir werden das Ergebnis sehen, dafür führen wir aus Python-Dateiname.py wie wir im folgenden Bild sehen können:
Da haben wir einige Grundlagen gesehen, wie die Bibliothek funktioniert SteckdoseLassen Sie uns das auf eine neue Ebene bringen. Ohne neue Anweisungen verwenden zu müssen, erhalten wir jetzt die Adresse eines Remote-Computers. Dies kann sehr wichtig sein, um Informationen für jede Validierung zu sammeln, die wir durchführen möchten.
In diesem Fall werden wir unser vorheriges Programm ein wenig modifizieren, in einer neuen Datei namens remote_information.py wir werden folgendes platzieren:
#! / usr / bin / env Python import socket def get_remote_computer_info (): remote_computer = 'www.google.com' try: print "Der entfernte Computer ist:% s"% remote_computer print "Die IP-Adresse ist:% s"% socket.gethostbyname (remote_host) außer socket.error, err_msg: print "% s:% s"% (remote_host, err_msg) if __name__ == '__main__': get_remote_host_info ()
Was wir getan haben, ist einfach den Namen von a . anzugeben Remote-HostDa wir nichts nachweisen können, können wir uns über eine bekannte Website informieren, in diesem Beispiel verwenden wir die Adresse von Google, in diesem Fall lautet unser Teamname URL und mit der gleichen Methode gethostbyname () wir werden die informationen bekommen.
Wir haben auch einen Fehlerhandler hinzugefügt, falls wir die von uns eingegebene Adresse ablehnen und somit die Ursachen kennen. Wenn wir dies in unserer Konsole schließlich ausführen, erhalten wir Folgendes:
Wenn wir Programme erstellen möchten, die unter Netzwerkprotokollen arbeiten, müssen wir sehr wahrscheinlich die verschiedenen Formate verwenden, in denen eine IP-Adresse ausgedrückt werden kann, natürlich alles entsprechend der Bequemlichkeit, die wir sehen.
Beliebte FormateEs gibt zwei sehr beliebte Formate für IP-Adressen, das erste ist inet_aton () das ist eine gepackte Version der IP und das Folgende ist inet_ntoa () Dies ist das Gegenteil und eine nicht verpackte Version der IP.
Jedes hat seine Verwendung in Programmen, es ist jedoch nicht das Hauptthema dieses Tutorials, das einzige, was wir zusätzlich angeben können, ist, dass diese Formate und ihre Funktionen nur für gelten IPv4, anstatt von IPv6 andere gelten.
Wir werden ein neues Programm erstellen, mit dem wir diese Konvertierung durchführen können:
#! / usr / bin / env Python import socket from binascii import hexlify def format_ip_address (): remote_host_a = socket.gethostbyname ('www.twitter.com') remote_host_b = socket.gethostbyname ('www.facebook.com') für dir_ip in [remote_host_a, remote_host_b]: packed_ip = socket.inet_aton (dir_ip) no_packed_ip = socket.inet_ntoa (packed_ip) print "IP-Adresse:% s => Gepackt:% s, Nicht Gepackt:% s"% (dir_ip, hexlipify (packed_ip .) ) ), unpacked_ip) if __name__ == '__main__': format_ip_address ()
Hier starten wir unser Programm wieder durch den Import der Bibliothek Steckdose, dann importieren wir eine Bibliothek namens verhexen die es uns ermöglicht, eine Konvertierung von hexadezimalen Formaten herzustellen, damit diese lesbar sind, verwenden wir dies, um die IP-Adressen entschlüsseln zu können. Um dies interessanter zu machen, haben wir zwei Remote-Computer platziert, von denen wir die IP-Adressen erhalten und mit a für Schleife wir werden beide durchlaufen, innerhalb der Iteration können wir dann die Konvertierungen mit den Adressformaten vornehmen IPv4 die wir erhalten haben.
Schließlich machen wir uns von jedem einen Eindruck, dafür haben wir uns auf die Methoden verlassen inet_aton () und inet_ntoa () beide aus der Socket-Bibliothek, wobei Sie sich daran erinnern sollten, dass sie klassenbasiert und nicht instanzbasiert ist.
Sehen wir uns an, wie das alles aussieht, wenn wir die vorherige Datei in unserer Befehlskonsole ausführen:
In diesem Beispiel haben wir alle Tricks gemischt, die wir zuvor gesehen haben, vom Abrufen der Informationen von einem Remote-Computer bis zum Erstellen einer Funktion, mit der wir die Informationen abrufen können, ohne alles in die interaktive Konsole von . schreiben zu müssen Python.
WichtigEine wichtige Empfehlung ist, dass wir bei Fragen die Dokumentation verwenden sollten und dank der großartigen Community von Python Im Internet können wir praktisch eine Lösung für jeden Zweifel oder jedes Problem finden, mit dem wir konfrontiert sind.
Damit beenden wir dieses Tutorial, es ist nur ein Einstieg in das Programmieren für Netzwerke mit PythonEs ist jedoch sehr nützlich zu wissen, dass wir mit unseren Programmen Informationen sowohl von unseren Computern als auch von entfernten Computern manipulieren können, ohne zusätzliche Einschlüsse aus Bibliotheken oder mehrere Codezeilen vornehmen zu müssen, um sie zu erhalten.Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben