Das telnetlib-Modul in Python

Vaibhav Vaibhav 14 April 2022
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().

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