Je cherche une méthode simple et rapide pour tester correctement si un port TCP donné est ouvert sur un serveur distant, depuis l'intérieur d'un script Shell.
J'ai réussi à le faire avec la commande telnet, et cela fonctionne bien lorsque le port est ouvert, mais il ne semble pas y avoir de délai d'attente lorsqu'il ne l'est pas et il reste là....
En voici un exemple :
l_TELNET=`echo "quit" | telnet $SERVER $PORT | grep "Escape character is"`
if [ "$?" -ne 0 ]; then
echo "Connection to $SERVER on port $PORT failed"
exit 1
else
echo "Connection to $SERVER on port $PORT succeeded"
exit 0
fi
J'ai besoin d'un meilleur moyen, ou d'un moyen de forcer telnet à dépasser le délai d'attente s'il ne se connecte pas en moins de 8 secondes par exemple, et à retourner quelque chose que je peux attraper dans Shell (code de retour, ou chaîne dans stdout).
Je connais la méthode Perl, qui utilise le module IO::Socket::INET et a écrit un script réussi qui teste un port, mais j'aimerais plutôt éviter d'utiliser Perl si possible.
Note : C'est ce que mon serveur exécute (d'où je dois exécuter ceci)
SunOS 5.10 Generic_139556-08 i86pc i386 i86pc
Toute aide serait appréciée !