Le module telnetlib en Python

Vaibhav Vaibhav 14 avril 2022
Le module telnetlib en Python

Le protocole Telnet, développé en 1969 et normalisé sous le nom d’IETF ou Internet Engineering Task Force, est un protocole client-serveur basé sur un transport fiable orienté connexion.

Il s’agit d’un protocole d’application utilisé sur le LAN ou le réseau local et sur Internet. Le protocole Telnet fournit une installation de communication interactive orientée texte bidirectionnelle (dans les deux sens) via une connexion de terminal virtuel (un terminal informatique ou un dispositif matériel électronique).

Dans le protocole Telnet, les données de l’utilisateur sont dispersées sur une connexion de données orientée octet 8 bits via le protocole TCP ou Transmission Control Protocol. Le langage de programmation Python possède un module telnetlib qui implémente le protocole Telnet.

Dans cet article, nous allons découvrir la bibliothèque telnetlib.

La bibliothèque telnetlib en Python

Le module telnetlib possède une classe Telnet qui contient l’implémentation proprement dite du protocole Telnet.

Cette classe représente une connexion de configuration à un serveur Telnet. Le constructeur de la classe Telnet accepte deux paramètres : host et port. Par défaut, le hôte est None et le port est 0.

Voici la signature de la classe Telnet.

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

La classe Telnet possède les méthodes suivantes.

  • read_until(expected, timeout = None) - Lire jusqu’à ce qu’une chaîne d’octets donnée, expected, soit trouvée ou jusqu’à ce que le nombre de secondes timeout se soit écoulé.
  • read_all() - Lit toutes les données sous forme d’octets jusqu’à ce que EOF ou End of File soit trouvé. Il bloque également jusqu’à ce que la connexion soit fermée.
  • read_some() - Lit au moins 1 octet de données jusqu’à ce qu’EOF soit rencontré.
  • read_very_eager() - Sans bloquer les opérations d’entrée-sortie ou d’E/S, lisez tout ce qui est possible.
  • read_eager() - Lire toutes les données facilement disponibles.
  • read_lazy() - Traite et renvoie les données déjà présentes dans les files d’attente.
  • read_very_lazy() - Renvoie toutes les données disponibles dans la file d’attente.
  • read_sb_data() - Renvoie les données qui sont collectées entre une paire SB/SE ou Suboption Begin/Suboption End.
  • open(host, post = 0) - Connectez-vous à l’hôte spécifié en utilisant le port de protocole Telnet par défaut 23. Ici, 0 pointe vers le port 23.
  • msg(msg, *args) - Affiche un message de débogage lorsque le niveau de débogage est supérieur à 0. Tous les arguments supplémentaires sont remplacés par le message à l’aide de l’opérateur de formatage de chaîne standard ou %.
  • set_debuglevel(debuglevel) - Définit le niveau de débogage.
  • close() - Ferme une connexion au serveur Telnet.
  • get_socket() - Renvoie l’objet socket utilisé en interne.
  • fileno() - Renvoie le descripteur de fichier de l’objet socket utilisé en interne.
  • write(buffer) - Ecrit une chaîne d’octets dans le socket de la connexion.
  • interact() - C’est une fonction interactive qui émule ou correspond à un client Telnet très stupide.
  • mt_interact() - Une fonction d’interaction multithread.
  • expect(list, timeout = None) - Lit les données jusqu’à ce qu’une expression régulière d’une liste d’expressions régulières corresponde.
  • set_option_negotiation_callback(callback) - Chaque fois qu’une option telnet est lue sur le flux de données d’entrée, cette fonction de rappel est appelée avec les paramètres suivants : callback(telnet socket, command (DO/DONT/WILL/WONT), option). Aucune autre opération n’est effectuée par la suite par le module telnetlib.

Exemple

Ce qui suit est un exemple simple qui tente de décrire l’utilisation du module telnetlib. Reportez-vous au code Python suivant.

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"))

Le script Python ci-dessus se connectera au localhost ou 127.0.0.1, une adresse de bouclage dans les systèmes informatiques.

Ensuite, il faudra deux entrées : nom d’utilisateur et mot de passe. Le module getpass nous permet de prendre des entrées de mot de passe sans les exposer visuellement en toute sécurité. Ensuite, le script se connectera à l’hôte en utilisant la classe Telnet.

Il écrira les entrées de nom d’utilisateur et de mot de passe à côté des chaînes Login: et Password:. Enfin, il exécutera les commandes ls et exit et lira toutes les données d’octets à l’aide de la méthode 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.

Article connexe - Python Module