Python - Telnet

Telnet é um tipo de protocolo de rede que permite a um usuário em um computador fazer logon em outro computador que também pertence à mesma rede. O comando telnet é usado junto com o nome do host e, em seguida, as credenciais do usuário são inseridas. Após o login bem-sucedido, o usuário remoto pode acessar os aplicativos e dados de forma semelhante ao usuário regular do sistema. É claro que alguns privilégios podem ser controlados pelo administrador do sistema que configura e mantém o sistema.

Em Python, o telnet é implementado pelo módulo telnetlib que possui a classe Telnet que possui os métodos necessários para estabelecer a conexão. No exemplo a seguir, também usamos o módulo getpass para lidar com o prompt de senha como parte do processo de login. Também assumimos que a conexão é feita a um host Unix. Os vários métodos da classe telnetlib.Telnet usados ​​no programa são explicados abaixo.

  • Telnet.read_until - Lê até que uma determinada string, esperada, seja encontrada ou até que os segundos de tempo limite tenham passado.

  • Telnet.write - Grava uma string no soquete, dobrando todos os caracteres IAC. Isso pode bloquear se a conexão for bloqueada. Pode levantar socket.error se a conexão for fechada.

  • Telnet.read_all () - Lê todos os dados até EOF; bloquear até que a conexão seja fechada.

Exemplo

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

Quando executamos o programa acima, obtemos a seguinte saída -

- 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

Observe que esta saída é específica para o computador remoto cujos detalhes são enviados quando o programa é executado.