[Python] Connessione telnet che non funziona.

Gabriele Battaglia iz4apu a libero.it
Lun 30 Nov 2015 15:39:33 CET



Reply to the Riccardo Magliocchetti's message, wrote on 30/11/2015 at 15:24:
> Il 30/11/2015 15:10, Gabriele Battaglia ha scritto:
>> Buon pomeriggio a tutti.
>>
>> Voglio scrivere uno script che si connetta ad un server telnet e mi
>> permetta di:
>>
> [snip]
>> Qualcosa però non funziona, non compare alcun output, ne errori di
>> connessione,
>> semplicemente la console resta vuota per un lungo periodo di tempo,
>> poi torna il
>> prompt, così:
>>
>> Lo script, fino ad ora è questo, solo un abbozzo.
>> ***
>> # FICS, data concepimento 28/11/2015 by Gabriele Battaglia
>
> Quindi sarà pronto tra ~9 mesi? :)
Molto probabile anche se spero in un settimino.

>
>> # stringa da analizzare
>> # <12> rnbqkbnr pp-ppppp --p----- -------- ---PP--- -------- PPP--PPP
>> RNBQKBNR B
>> 3 1 1 1 1 0 279 Exylyan GuestQHWY -1 3 3 39 39 172 180 2 P/d2-d4
>> (0:11) d4 0 1 0
>>
>> import getpass, sys, telnetlib
>>
>> HOST = "freechess.org"
>
> Se la prossima volta specifichi a cosa vuoi collegarti nel testo della
> mail agevoli la vita agli altri :)
Volentieri, ma non ne capisco l'utilità: è un server per giocare a 
scacchi, appunto freechess.org che implementa una connessione telnet.

>
>> user = raw_input("Inserisci il tuo account remoto: ")
>> 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") *Ho messo il cancelletto perche' non ho capito a che
>> serve
>> questo comando
>> #tn.write("exit\n") * idem
>>
>> print tn.read_all()
>> ***
>>
>> Cosa può essere che non funziona?
>
> Prima datti una letta su cos'è telnet su wikipedia e su per cosa viene
> (ahinoi ancora) usato (hint: una shell).

Fatto, qui: https://it.wikipedia.org/wiki/Telnet#Caratteristiche
Mi rendo conto dei problemi di sicurezza ma che posso farci? La scelta 
di usare telnet e non SSH, o qualche altro protocollo, è dei gestori del 
servizio di freechess.

> Poi ti consiglio di andare su
> freechess.org e leggere le istruzioni su dove devi collegarti (hint: la
> porta!).

La porta è quella di default, la 23, anche se penso il server ascolti 
anche sulla 5000.
Tuttavia, se dal prompt dei comandi digito:

telnet freechess.org

La connessione è immediata, così come è funzionante la negoziazione di 
user e password, insomma, la sessione avviene correttamente e termina 
quando io invio il comando "quit".
Sono perciò certo che nessun firewall si opponga, che la porta sia la 23 
e che non vi siano altri impedimenti, ecco perchè, credevo lo script 
funzionasse senza problemi.
...


Maggiori informazioni sulla lista Python