El módulo telnetlib en Python

Vaibhav Vaibhav 14 abril 2022
El módulo telnetlib en Python

El protocolo Telnet, desarrollado en 1969 y estandarizado como IETF o Internet Engineering Task Force, es un protocolo cliente-servidor basado en un transporte confiable orientado a la conexión.

Es un protocolo de aplicación utilizado en la LAN o red de área local e Internet. El protocolo Telnet proporciona una facilidad de comunicación bidireccional (en ambas direcciones) interactiva orientada a texto a través de una conexión de terminal virtual (una terminal de computadora o un dispositivo de hardware electrónico).

En el protocolo Telnet, los datos del usuario se dispersan en una conexión de datos orientada a bytes de 8 bits sobre TCP o Protocolo de control de transmisión. El lenguaje de programación Python tiene un módulo telnetlib que implementa el protocolo Telnet.

En este artículo, aprenderemos sobre la biblioteca telnetlib.

La biblioteca telnetlib en Python

El módulo telnetlib tiene una clase Telnet que contiene la implementación real del protocolo Telnet.

Esta clase representa una conexión de configuración a un servidor Telnet. El constructor de la clase Telnet acepta dos parámetros: host y port. Por defecto, el host es None, y el port es 0.

A continuación se muestra la firma de la clase Telnet.

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

La clase Telnet tiene los siguientes métodos.

  • read_until(expected, timeout = None) - Leer hasta que se encuentre una cadena de bytes dada, expected, o hasta que haya pasado la cantidad de segundos de timeout.
  • read_all() - Lee todos los datos como bytes hasta que se encuentra EOF o End of File. También bloquea hasta que se cierra la conexión.
  • read_some() - Leer al menos 1 byte de datos hasta que se encuentre EOF.
  • read_very_eager() - Sin bloquear las operaciones de Entrada-Salida o E/S, lee todo lo posible.
  • read_eager() - Lee todos los datos fácilmente disponibles.
  • read_lazy() - Procesa y devuelve datos que ya están dentro de las colas.
  • read_very_lazy() - Devuelve cualquier dato que esté disponible en la cola.
  • read_sb_data() - Devuelve los datos que se recopilan entre un par SB/SE o Suboption Begin/Suboption End.
  • open(host, post = 0): conéctese al host especificado utilizando el puerto de protocolo Telnet predeterminado 23. Aquí, 0 apunta al puerto 23.
  • msg(msg, *args) - Imprime un mensaje de depuración cuando el nivel de depuración es superior a 0. Todos los argumentos adicionales se sustituyen por el mensaje utilizando el operador de formato de cadena estándar o %.
  • set_debuglevel(debuglevel) - Establece el nivel de depuración.
  • close() - Cierra una conexión al servidor Telnet.
  • get_socket() - Devuelve el objeto socket utilizado internamente.
  • fileno() - Devuelve el descriptor de archivo del objeto socket utilizado internamente.
  • write(buffer) - Escribe una cadena de bytes en el socket de la conexión.
  • interact() - Es una función interactiva que emula o coincide con un cliente Telnet muy tonto.
  • mt_interact() - Una función de interacción multiproceso.
  • expect(list, timeout = None): lee los datos hasta que coincida una expresión regular de una lista de expresiones regulares.
  • set_option_negotiation_callback(callback): cada vez que se lee una opción de telnet en el flujo de datos de entrada, se llama a esta función de devolución de llamada con los siguientes parámetros: devolución de llamada (socket de telnet, comando (DO/DONT/WILL/WONT), opción). El módulo telnetlib no realiza ninguna otra operación después.

Ejemplo

El siguiente es un ejemplo directo que intenta representar el uso del módulo telnetlib. Consulte el siguiente código de Python.

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

El script de Python anterior se conectará al localhost o 127.0.0.1, una dirección de bucle invertido en los sistemas informáticos.

A continuación, tomará dos entradas: nombre de usuario y contraseña. El módulo getpass nos permite tomar entradas de contraseña sin exponerlas visualmente de forma segura. Luego, el script se conectará al host usando la clase Telnet.

Escribirá las entradas de nombre de usuario y contraseña junto a las cadenas Login: y Password:. Por último, ejecutará los comandos ls y exit y leerá todos los datos de bytes utilizando el método 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.

Artículo relacionado - Python Module