Você pode ativar o keepalive apenas para sua conexão telnet aplicando algumas opções no soquete. Em vez de codificar isso e recompilar o programa, você pode simplesmente usar uma biblioteca existente libkeepalive .
Faça o download do arquivo tar de origem, libkeepalive-0.3.tar.gz , e compile a biblioteca com o comando make .
tar xvzf libkeepalive-0.3.tar.gz
cd libkeepalive-0.3
make
Você terá um arquivo libkeepalive.so . Agora você pode executar seu telnet com a biblioteca pré-carregada. Ele fará as alterações apropriadas na função socket() . Você tem 3 valores que você pode definir no ambiente, como para o keepalive global. Por exemplo,
LD_PRELOAD=$PWD/libkeepalive.so \
KEEPCNT=2 KEEPIDLE=2 KEEPINTVL=4 telnet hostname
Agora, quando o controle remoto parar de responder aos pacotes keepalive, o comando telnet sairá com Connection closed by foreign host.
Veja o arquivo README nas fontes:
KEEPCNT <=> net.ipv4.tcp_keepalive_probes
KEEPIDLE <=> net.ipv4.tcp_keepalive_time
KEEPINTVL <=> net.ipv4.tcp_keepalive_intvl
Após KEEPIDLE segundos, um pacote keepalive será enviado a cada KEEPINTVL segundos. Após os pacotes KEEPCNT sem resposta, desconecte-se.