comando telnet com duração de tempo limite personalizada

2

Estou tentando executar o comando telnet e obter o script de shell. Mas quando a porta não abre ou o ip não existe. O comando leva muito tempo para dar a resposta. Será possível limitar o tempo máximo de tentativa no telnet?

telnet host port
    
por sugunan 21.08.2015 / 11:56

3 respostas

2

Isso não será mais do que 2 segundos:

[]# echo quit | timeout --signal=9 2 telnet [SERVER] [PORT]
    
por 14.04.2018 / 15:36
1

Se estiver executando scripts, você pode executar o telnet em segundo plano e, se ainda estiver em execução após um atraso, poderá eliminá-lo. Exemplo:

{ printf "HEAD /\n\n"; sleep 1; } | telnet hostname port & sleep 2 && kill %1 2>/dev/null && echo "timeout"

Isso aguarda 2 segundos antes de matar o telnet em segundo plano.

    
por 05.02.2017 / 23:24
1

Você precisa rodar o telnet? Acho que o tempo limite (1) irá ajudá-lo.

Alternativa # 1: Use timeout, que faz parte do GNU coreutils. Isso não confirmará se você conseguiu estabelecer uma conexão ou não.

TIMEOUT=10 timeout $TIMEOUT telnet <host> <port>

Alternativa # 2: Use Bash / Perl / Python para resolver o mesmo problema, com mais ou menos granularidade.

Alguns exemplos:

Bash: TIMEOUT=10; telnet <host> <port> 2>&1 >/dev/null & WPID=$!; sleep $TIMEOUT && kill $! & KPID=$!; wait $WPID

Perl : perl -e "alarm 10; exec @ARGV" "telnet my.server.com 23"

Python: python -c 'import telnetlib;HOST="my.server.com"; PORT=23; TIMEOUT=10; PATTERN="Login: "; t = telnetlib.Telnet (HOST, PORT); t_read = t.read_until(PATTERN, TIMEOUT); print(repr(t_read))'

Espero que isso seja de alguma ajuda!

    
por 21.06.2017 / 18:29