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?
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?
Risposte:
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!
nc
restituirà 0 se la porta è aperta e 1 se non lo è. Questo è abbastanza utile anche per gli script. Ometti l' v
interruttore per mantenerlo silenzioso:
if ! nc -z 10.10.10.24 3306
then
do_something
fi
nc
è molto meglio per un utilizzo non interattivo. Prova qualcosa del genere
echo -e "\n\n" | nc 10.10.10.24 3306
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
Per automatizzare lo script telnet, è necessario utilizzare prevedere. Vedi la home page di aspettarsi .
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/
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 "'^]'."