J'utilise la commande telnet pour vérifier si le port MySQL répond.
telnet 10.10.10.24 3306
J'utilise le caractère ctrl pour me déconnecter. Cela fonctionne comme prévu. Comment utiliser cette commande dans un script shell?
J'utilise la commande telnet pour vérifier si le port MySQL répond.
telnet 10.10.10.24 3306
J'utilise le caractère ctrl pour me déconnecter. Cela fonctionne comme prévu. Comment utiliser cette commande dans un script shell?
Réponses:
Si vous cherchez simplement à vérifier si le port est ouvert, essayez:
$ nc -zv 10.10.10.24 3306
Connection to localhost 3306 port [tcp/mysql] succeeded!
nc
renverra 0 si le port est ouvert et 1 s'il ne l'est pas. Ceci est également très utile pour les scripts. Omettez le v
commutateur pour le garder silencieux:
if ! nc -z 10.10.10.24 3306
then
do_something
fi
nc
est beaucoup mieux pour une utilisation non interactive. Essayez quelque chose comme
echo -e "\n\n" | nc 10.10.10.24 3306
Si vous n'avez pas nc, vous pouvez utiliser des redirections de fichiers spéciaux bash:
head -1 < /dev/tcp/10.10.10.24/3306 >/dev/null && echo MySQL is on || echo MySQL is off
Pour automatiser le script telnet, vous devez utiliser expect. Voir la page d'accueil attendue .
Ceci est mon script pour tous les cas spécifiques.
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/
Voici comment utiliser telnet dans le 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 "'^]'."