Usando 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 como esperado. Como uso esse comando no shell script?


Na verdade, faça o eco com novas linhas, como Janne propõe, e adicione um valor de tempo limite sensato com -w.
3molo

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!

ncretornará 0 se a porta estiver aberta e 1 se não estiver. Isso é bastante útil para scripts também. Omita o vinterruptor para mantê-lo quieto:

if ! nc -z 10.10.10.24 3306
then
    do_something
fi

Obrigado. Mas a opção -z está funcionando no servidor, mas não em outro. Preciso verificar a versão do comando nc?
Shantanuo 6/08/11

Possivelmente. Qual versão não está funcionando?
Cakemox 6/08/11

A opção -z está funcionando corretamente. Eu estava errado, ignore o comentário acima.
Shantanuo


4

Se você não possui nc, pode usar os 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


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

http://fajlinux.com.br/2014/10/10/script-monitorando-via-telnet/


0

Eu usaria o netcat e é '-w';

host: ~ usuário $ nc -w 1 1.2.6.1 3306
?
5.1.57-1 ~ dotdeb.1? WO`rA * L # h? B4z.pmT; i ~ ^; host: ~ usuário $ 

0

Aqui está como usar o telnet no shell bash / expect

#!/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 "'^]'."
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.