Das telnetlib-Modul in Python

Das telnetlib-Modul in Python

Das Telnet-Protokoll, das 1969 entwickelt und als IETF oder Internet Engineering Task Force standardisiert wurde, ist ein Client-Server-Protokoll, das auf einem zuverlässigen verbindungsorientierten Transport basiert.

Es ist ein Anwendungsprotokoll, das im LAN oder Local Area Network und im Internet verwendet wird. Das Telnet-Protokoll bietet eine bidirektionale (in beide Richtungen) interaktive textorientierte Kommunikationseinrichtung über eine virtuelle Terminalverbindung (ein Computerterminal oder ein elektronisches Hardwaregerät).

Beim Telnet-Protokoll werden die Daten des Benutzers über eine 8-Bit-Byte-orientierte Datenverbindung über das TCP oder Transmission Control Protocol verstreut. Die Programmiersprache Python hat ein telnetlib-Modul, das das Telnet-Protokoll implementiert.

In diesem Artikel lernen wir die Bibliothek telnetlib kennen.

Die telnetlib-Bibliothek in Python

Das Modul telnetlib hat eine Klasse Telnet, die die eigentliche Implementierung des Telnet-Protokolls enthält.

Diese Klasse repräsentiert eine Setup-Verbindung zu einem Telnet-Server. Der Klassenkonstruktor Telnet akzeptiert zwei Parameter: host und port. Standardmäßig ist der host None und der port ist 0.

Es folgt die Signatur der Klasse Telnet.

class telnetlib.Telnet(host=None, port=0)

Die Klasse Telnet hat die folgenden Methoden.

  • read_until(expected, timeout = None) – Liest, bis eine gegebene Bytefolge, expected, gefunden wird oder bis die timeout-Anzahl von Sekunden verstrichen ist.
  • read_all() - Liest alle Daten als Bytes bis EOF oder End of File gefunden wird. Es blockiert auch, bis die Verbindung geschlossen wird.
  • read_some() – Liest mindestens 1 Datenbyte, bis EOF angetroffen wird.
  • read_very_eager() - Lesen Sie alles Mögliche, ohne die Input-Output- oder I/O-Operationen zu blockieren.
  • read_eager() - Liest alle leicht verfügbaren Daten.
  • read_lazy() - Daten bereits in den Warteschlangen verarbeiten und zurückgeben.
  • read_very_lazy() - Gibt alle Daten zurück, die in der Warteschlange verfügbar sind.
  • read_sb_data() – Gibt die Daten zurück, die zwischen einem SB/SE-Paar oder Suboption Begin/Suboption End gesammelt werden.
  • open(host, post = 0) – Verbinden Sie sich mit dem angegebenen Host unter Verwendung des standardmäßigen Telnet-Protokollports 23. Hier zeigt 0 auf Port 23.
  • msg(msg, *args) - Gibt eine Debug-Meldung aus, wenn der Debug-Level über 0 liegt. Alle zusätzlichen Argumente werden für die Nachricht mit dem Standard-String-Formatierungsoperator oder % ersetzt.
  • set_debuglevel(debuglevel) - Debug-Level setzen.
  • close() - Schließt eine Verbindung zum Telnet-Server.
  • get_socket() - Gibt das intern verwendete Socket-Objekt zurück.
  • fileno() - Gibt den Dateideskriptor des intern verwendeten Socket-Objekts zurück.
  • write(buffer) - Schreibt einen Byte-String in den Socket der Verbindung.
  • interact() - Dies ist eine interaktive Funktion, die einen sehr dummen Telnet-Client emuliert oder mit ihm übereinstimmt.
  • mt_interact() - Eine Multithread-Interaktionsfunktion.
  • expect(list, timeout = None) - Liest die Daten, bis ein regulärer Ausdruck aus einer Liste regulärer Ausdrücke passt.
  • set_option_negotiation_callback(callback) – Jedes Mal, wenn eine Telnet-Option im Eingangsdatenfluss gelesen wird, wird diese Callback-Funktion mit den folgenden Parametern aufgerufen: callback(telnet socket, command (DO/DONT/WILL/WONT), option). Danach erfolgt keine weitere Operation durch das telnetlib-Modul.

Beispiel

Das Folgende ist ein einfaches Beispiel, das versucht, die Verwendung des telnetlib-Moduls darzustellen. Siehe den folgenden Python-Code.

import getpass
import telnetlib

host = "127.0.0.1"
user = input("Username: ")
password = getpass.getpass()
tn = telnetlib.Telnet(host)
tn.read_until(b"Login: ")
tn.write(user.encode("ascii") + b"\n")

if password:
    tn.read_until(b"Password: ")
    tn.write(password.encode("ascii") + b"\n")

tn.write(b"ls\n")
tn.write(b"exit\n")
print(tn.read_all().decode("ascii"))

Das obige Python-Skript verbindet sich mit localhost oder 127.0.0.1, einer Loopback-Adresse in Computersystemen.

Als nächstes sind zwei Eingaben erforderlich: Benutzername und Passwort. Das getpass-Modul ermöglicht es uns, Passworteingaben entgegenzunehmen, ohne sie visuell preiszugeben. Anschließend verbindet sich das Skript über die Klasse Telnet mit dem Host.

Es schreibt die Benutzernamen- und Passworteingaben neben die Zeichenketten Login: und Password:. Zuletzt führt es die Befehle ls und exit aus und liest alle Bytedaten mit der Methode read_all().

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Verwandter Artikel - Python Module