[Python] Telnet: verifica connessione.

Gabriele Battaglia iz4apu a libero.it
Mer 21 Giu 2017 12:35:58 CEST


Giorno.
Uno script connette un servizio via Telnet. Poi, come un qualsiasi 
client, ad ogni ciclo legge l'eventuale output del server con la 
funzione read_very_eager, della libreria inclusa in Python, telnetlib.
Tuttavia, se l'utente non interagisce con il server per un periodo 
impostato da quest'ultimo, pari a circa 60 minuti, la connessione viene 
chiusa.
read_very_eager però, non se ne accorge e, a parte il fatto che 
naturalmente non legge nulla, non solleva nemmeno alcuna eccezione e lo 
script continua a girare senza errori.
Se l'utente poi torna al terminale dopo 60 minuti ed invia un comando, 
il client trova la connessione chiusa e viene sollevata questa eccezione:

Traceback (most recent call last):
   File "C:\Dropbox\Py\Bici.py", line 302, in <module>
     s = tn.read_very_eager()
   File "C:\Python27\lib\telnetlib.py", line 416, in read_very_eager
     self.fill_rawq()
   File "C:\Python27\lib\telnetlib.py", line 576, in fill_rawq
     buf = self.sock.recv(50)
socket.error: [Errno 10054] Connessione in corso interrotta forzatamente 
dall'host remoto

C:\Dropbox\Py>

La domanda è, a parte la gestione dell'errore con un try:, esiste un 
altro modo per verificare, ad intervalli regolari, se la connessione è 
ancora attiva?

Grazie.
Gabriele.


Maggiori informazioni sulla lista Python