Utilizzo di telnet nello script della shell


8

Uso il comando telnet per verificare se la porta MySQL sta rispondendo.

telnet 10.10.10.24 3306

Uso il carattere ctrl per disconnettermi. Funziona come previsto. Come posso usare questo comando nello script della shell?


In realtà, fai l'eco con le nuove righe come propone Janne e aggiungi un valore di timeout sensato con -w.
3molo,

Risposte:


12

Se stai solo cercando di verificare se la porta è aperta, prova:

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

ncrestituirà 0 se la porta è aperta e 1 se non lo è. Questo è abbastanza utile anche per gli script. Ometti l' vinterruttore per mantenerlo silenzioso:

if ! nc -z 10.10.10.24 3306
then
    do_something
fi

Grazie. Ma l'opzione -z funziona sul server ma non su un altro. Devo controllare la versione del comando nc?
shantanuo,

Forse. Quale versione non funziona?
Cakemox,

L'opzione -z funziona correttamente. Ho sbagliato, ignora il commento sopra.
shantanuo,

9

ncè molto meglio per un utilizzo non interattivo. Prova qualcosa del genere

echo -e "\n\n" | nc 10.10.10.24 3306

Se eseguo questo, ottengo un risultato confuso, ma il comando non termina. Qualcuno sa perché?
Christoph Wurm,

Hmmm? Dovrebbe uscire.
Janne Pikkarainen,

4

Se non hai nc, puoi usare i reindirizzamenti di file speciali bash:

head -1 < /dev/tcp/10.10.10.24/3306 >/dev/null && echo MySQL is on || echo MySQL is off

2

Per automatizzare lo script telnet, è necessario utilizzare prevedere. Vedi la home page di aspettarsi .


1

Questa è la mia sceneggiatura per casi specifici.

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

Vorrei usare netcat ed è invece '-w';

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

0

Ecco come usare telnet nella shell bash / aspettarsi

#!/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 "'^]'."
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.