Python - Telnet

Telnet es un tipo de protocolo de red que permite a un usuario de una computadora iniciar sesión en otra computadora que también pertenece a la misma red. El comando telnet se usa junto con el nombre de host y luego se ingresan las credenciales del usuario. Tras iniciar sesión correctamente, el usuario remoto puede acceder a las aplicaciones y los datos de forma similar a como lo hace el usuario habitual del sistema. Por supuesto, algunos privilegios pueden ser controlados por el administrador del sistema que configura y mantiene el sistema.

En Python, telnet es implementado por el módulo telnetlib que tiene la clase Telnet que tiene los métodos necesarios para establecer la conexión. En el siguiente ejemplo, también usamos el módulo getpass para manejar la solicitud de contraseña como parte del proceso de inicio de sesión. También asumimos que la conexión se realiza a un host Unix. Los distintos métodos de la clase telnetlib.Telnet utilizados en el programa se explican a continuación.

  • Telnet.read_until: leer hasta que se encuentre una cadena determinada, esperada, o hasta que hayan pasado los segundos del tiempo de espera.

  • Telnet.write: escribe una cadena en el socket, duplicando los caracteres IAC. Esto puede bloquear si la conexión está bloqueada. Puede generar socket.error si la conexión está cerrada.

  • Telnet.read_all () - Leer todos los datos hasta EOF; bloquear hasta que la conexión se cierre.

Ejemplo

import getpass
import telnetlib
HOST = "http://localhost:8000/"
user = raw_input("Enter your remote account: ")
password = getpass.getpass()
tn = telnetlib.Telnet(HOST)
tn.read_until("login: ")
tn.write(user + "\n")
if password:
    tn.read_until("Password: ")
    tn.write(password + "\n")
tn.write("ls\n")
tn.write("exit\n")
print tn.read_all()

Cuando ejecutamos el programa anterior, obtenemos el siguiente resultado:

- lrwxrwxrwx    1 0        0               1 Nov 13  2012 ftp -> .
- lrwxrwxrwx    1 0        0               3 Nov 13  2012 mirror -> pub
- drwxr-xr-x   23 0        0            4096 Nov 27  2017 pub
- drwxr-sr-x   88 0        450          4096 May 04 19:30 site
- drwxr-xr-x    9 0        0            4096 Jan 23  2014 vol

Tenga en cuenta que esta salida es específica de la computadora remota cuyos detalles se envían cuando se ejecuta el programa.