introduction
Le telnetlib est un module de la bibliothèque Python standard. Il fournit la classe telnetlib.Telnet pour implémenter la fonction Telnet. Voir RFC854 pour plus de détails sur le protocole : https://datatracker.ietf.org/doc/html/rfc854.html .
Différentes méthodes de la classe telnetlib.Telnet sont appelées pour implémenter différentes fonctions.
from telnetlib import Telnet # Importe la classe Telnet du module telnetlib.
tn = Telnet(host=None, port=0[, timeout]) # Crée une connexion Telnet à un serveur spécifié.
tn.read_all() # Invoque la méthode read_all().
Pour plus d'informations, consultez https://docs.python.org/3/library/telnetlib.html .
Exemple de configuration
Le processus de mise en œuvre est le suivant :
1. Configurez le serveur Telnet
[Huawei] interface utilisateur vty 0 4
[Huawei-ui-vty0-4] mot de passe du mode d'authentification
[Huawei-ui-vty0-4] définir le mot de passe d'authentification simple Huawei@123
[Huawei-ui-vty0-4] protocole telnet entrant
[Huawei-ui-vty0-4] niveau de privilège utilisateur 15
[Huawei-ui-vty0-4] quitter
[Huawei] serveur telnet activé
2. Vérifiez et affichez manuellement la procédure de connexion Telnet comme référence pour la mise en œuvre du code.
En utilisant le système d'exploitation Windows comme exemple :
C:\>telnet 192.168.10.10
Authentification de connexion
Mot de passe:
Info : Le nombre maximum d'utilisateurs VTY est de 5, et le nombre d'utilisateurs VTY actuels en ligne est 1.
L'heure de connexion actuelle est 2020-12-31 21:00.
%
<Huawei>
3. Compilez et exécutez le code Python.
import telnetlib # Importe le module.
host ='192.168.10.10' # Définit l'adresse IP d'un hôte
password = 'Huawei@123' # Définit le mot de passe pour se connecter à l'appareil
tn = telnetlib.Telnet(host) # Se connecte à l'hôte via Telnet.
tn.read_until(b'Password:') # Imprime les données jusqu'à ce que 'Password: ' s'affiche
tn.write(password.encode('ascii') + b'\n') # Définit un mot de passe ASCII et commence une nouvelle ligne
print (tn.read_until(b'<Huawei>').decode('ascii)) # Imprime les données jusqu'à ce que <Huawei> soit affiché.
tn.close() # Ferme la connexion Telnet.
En Python, les fonctions encode() et decode() sont utilisées pour coder et décoder des chaînes dans un format spécifié, respectivement. Dans cet exemple, password.encode('ascii') consiste à convertir la chaîne HuaweiQ @123 au format ASCll. Le format d'encodage est conforme aux exigences officielles du module telnetlib.
Ajoutez une chaîne b, b'str' , indiquant que la chaîne est un objet bytes. Dans cet exemple, b'Password' : indique que la chaîne Password :' est convertie en une chaîne de type bytes. Le format d'encodage est conforme aux exigences officielles du module telnetlib.
Pour plus d'informations sur les objets Python, consultez
https://docs.python.org/3/reference/datamodel.html#objects-values-and-types .
4. Vérifiez le résultat.
# Exécutez le code Python dans le compilateur.
Info : Le nombre maximum d'utilisateurs VTY est de 5, et le nombre d'utilisateurs VTY actuels en ligne est 1.
L'heure de connexion actuelle est 2020-12-31 21:00.
%
<Huawei>