Puede habilitar keepalive solo para su conexión telnet aplicando algunas opciones en el socket. En lugar de codificar esto y recompilar el programa, simplemente puede usar una biblioteca existente libkeepalive .
Descargue el archivo tar fuente, libkeepalive-0.3.tar.gz
, y compile la biblioteca con el comando make
.
tar xvzf libkeepalive-0.3.tar.gz
cd libkeepalive-0.3
make
Tendrás un archivo libkeepalive.so
. Ahora puede ejecutar su telnet con la biblioteca pre -cargada. Hará los cambios apropiados a la función socket()
. Tiene 3 valores que puede establecer en el entorno, en cuanto al keepalive global. Por ejemplo,
LD_PRELOAD=$PWD/libkeepalive.so \
KEEPCNT=2 KEEPIDLE=2 KEEPINTVL=4 telnet hostname
Ahora, cuando el control remoto deje de responder a los paquetes keepalive, el comando telnet saldrá conConnection closed by foreign host.
Ver el archivo README
en las fuentes:
KEEPCNT <=> net.ipv4.tcp_keepalive_probes
KEEPIDLE <=> net.ipv4.tcp_keepalive_time
KEEPINTVL <=> net.ipv4.tcp_keepalive_intvl
Después de KEEPIDLE segundos, se enviará un paquete keepalive cada KEEPINTVL segundos. Después de los paquetes KEEPCNT sin respuesta, desconéctese.