Python - Telnet

Telnet è un tipo di protocollo di rete che consente a un utente di un computer di accedere a un altro computer che appartiene anch'esso alla stessa rete. Il comando telnet viene utilizzato insieme al nome host, quindi vengono immesse le credenziali dell'utente. Dopo aver effettuato correttamente l'accesso, l'utente remoto può accedere alle applicazioni e ai dati in un modo simile all'utente normale del sistema. Ovviamente alcuni privilegi possono essere controllati dall'amministratore del sistema che imposta e mantiene il sistema.

In Python telnet è implementato dal modulo telnetlib che ha la classe Telnet che ha i metodi richiesti per stabilire la connessione. Nell'esempio seguente utilizziamo anche il modulo getpass per gestire la richiesta della password come parte del processo di accesso. Inoltre si presume che la connessione venga effettuata a un host unix. I vari metodi della classe telnetlib.Telnet utilizzati nel programma sono spiegati di seguito.

  • Telnet.read_until: legge fino a quando non viene rilevata una determinata stringa, prevista o fino a quando non sono trascorsi i secondi di timeout.

  • Telnet.write: scrive una stringa nel socket, raddoppiando i caratteri IAC. Questo può bloccare se la connessione è bloccata. Può sollevare socket.error se la connessione è chiusa.

  • Telnet.read_all () - Legge tutti i dati fino all'EOF; bloccare fino alla chiusura della connessione.

Esempio

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 eseguiamo il programma sopra, otteniamo il seguente output:

- 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

Si noti che questo output è specifico per il computer remoto i cui dettagli vengono inviati quando il programma viene eseguito.