Usando o telnet no shell script

8

Eu uso o comando telnet para verificar se a porta MySQL está respondendo.

telnet 10.10.10.24 3306

Eu uso o caractere ctrl para desconectar. Isso está funcionando conforme o esperado. Como eu uso este comando no script de shell?

    
por shantanuo 05.08.2011 / 11:26

7 respostas

12

Se você está apenas olhando para verificar se a porta está aberta, tente:

$ nc -zv 10.10.10.24 3306
Connection to localhost 3306 port [tcp/mysql] succeeded!

nc retornará 0 se a porta estiver aberta e 1 se não estiver. Isso é bastante útil para scripts também. Omita o interruptor v para manter o silêncio:

if ! nc -z 10.10.10.24 3306
then
    do_something
fi
    
por 05.08.2011 / 11:57
9

nc é muito melhor para uso não interativo. Tente algo como

echo -e "\n\n" | nc 10.10.10.24 3306
    
por 05.08.2011 / 11:33
4

Se você não tem nc, você pode usar redirecionamentos de arquivos especiais do bash:

head -1 < /dev/tcp/10.10.10.24/3306 >/dev/null && echo MySQL is on || echo MySQL is off
    
por 07.08.2011 / 21:38
2

Para automatizar o script telnet, você deve usar o expect. Veja a página inicial esperada.

    
por 05.08.2011 / 13:11
1

Este é o meu script para casos específicos.

host=localhost
DATE='date +%Y-%m-%d'
TIME='date +%H%M%S'
LOG_OK=/tmp/telnet_ok
LOG_FAIL=/tmp/telnet_falha

for port in 80 25 22 443 110
do
if telnet -c $host $port </dev/null 2>&1 | grep -q Escape; then
  echo "$DATE $TIME  $port: Connected" >> $LOG_OK
else
  echo "$DATE $TIME $port : no connection" >> $LOG_FAIL
fi
done

link

    
por 10.10.2014 / 22:33
0

Eu usaria netcat e é '-w';

host:~ user$  nc -w 1 1.2.6.1 3306
?
5.1.57-1~dotdeb.1?WO'rA*L#h?b4z.pmT;i~^;host:~ user$ 
    
por 05.08.2011 / 11:31
0

Aqui está como usar o telnet no shell do bash / esperar

#!/usr/bin/expect
# just do a chmod 755 one the script
# ./YOUR_SCRIPT_NAME.sh $YOUHOST $PORT
# if you get "Escape character is '^]'" as the output it means got connected otherwise it has failed

set ip [lindex $argv 0]
set port [lindex $argv 1]

set timeout 5
spawn telnet $ip $port
expect "'^]'."
    
por 14.11.2017 / 23:08

Tags