[Python] telnetlib gestione router

Manlio Perillo manlio.perillo a gmail.com
Mer 4 Maggio 2011 16:00:59 CEST


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Il 04/05/2011 11:34, Nicola Ferrari ha scritto:
> Se riesco ci darò un occhiata...
> Una domanda "teorica"... una volta che da telnet faccio "reboot", per
> sapere se ha riavviato devo controllare se la rete è "su" giusto?? 
> solo che nel momento in cui faccio reboot al momento in cui la rete
> "cade", passa un po' di tempo.. come faccio a risolvere? Faccio uno sleep ? 
> Di quanti secondi?
> 

Non è un problema banale.

Una cosa che puoi fare è togliere la chiamata ad exit, ed invece
mantenere la chiamata a tn.read_all() dopo il reboot

In questo modo il programma resta bloccato fino a quando la
connessione non verrà chiusa dal server.

Purtroppo TCP non è troppo sveglio ad accorgersi che una connessione è
interrotta (ha i suoi buoni motivi), ma per questo puoi utilizzare
TCP_ALIVE:

http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/usingkeepalive.html
http://utcc.utoronto.ca/~cks/space/blog/python/TcpKeepalivesInPython

Nel tuo caso: http://paste.pocoo.org/show/382788/

L'ho provato con il mio ruoter (adattando il codice).
Dato che non chiami exit, la connessione viene chiusa quando il router
disconnette la rete.

N.B.:
il programma non è portabile; credo funzioni solo su Linux.
Su altri sistemi UNIX è da verificare come ottenere lo stesso effetto.



Ciao  Manlio

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk3BXBsACgkQscQJ24LbaURceQCeMBF6GXYuFO8OIY2fXqSJ9R4l
+/QAn0no/LjUs1juMUhXbOwXgFXkk47/
=iYy7
-----END PGP SIGNATURE-----


Maggiori informazioni sulla lista Python