163 votes

Vérifier l'état d'un port sur un hôte distant

J'ai besoin d'une ligne de commande qui puisse vérifier l'état du port sur un hôte distant. J'ai essayé ping xxx.xxx.xxx.xxx:161 mais il ne reconnaît pas l'"hôte". Je pensais que c'était une "bonne" réponse jusqu'à ce que je fasse la même commande contre un hôte dont je sais qu'il a ce port ouvert. Il s'agit d'un fichier batch sous Windows qui vérifie l'état du port distant, puis exécute une commande qui utilise ce port distant pour obtenir des informations, puis la commande de vérification du port distant à nouveau, puis la commande qui utilise ce port sur le serveur suivant pour obtenir des informations, et ainsi de suite. J'ai cherché partout et j'ai pensé que ping pourrait le faire, mais il doit y avoir plusieurs versions de ping, je suppose que le serveur sur lequel je fais cela n'affiche pas cette option.

Juste pour rire, j'ai essayé un vérificateur de port distant basé sur le Web à partir d'un site Web - et les résultats étaient corrects pour le serveur "problématique" et le serveur correct. Cependant, je ne peux pas l'utiliser dans un traitement par lots contenant plus de 500 adresses IP de serveurs.

Y a-t-il quelque chose de simple que je puisse faire ? Mes compétences en Perl sont extrêmement rouillées (à utiliser ou à perdre), je ne connais pas d'autres langages basés sur Windows, à l'exception du batch. Unix est ma compétence, mais ceci doit être exécuté à partir de Widows Server 2003.

4voto

caskey Points 5581

Nc ou 'netcat' possède également un mode de balayage qui peut être utile.

2voto

Trueblood Points 312

Je pense que vous cherchez Hping ( http://www.hping.org/ ), qui dispose d'une version Windows.

"L'interface est inspirée de la commande unix ping(8), mais hping n'est pas seulement seulement capable d'envoyer des requêtes d'écho ICMP. Il supporte TCP, UDP, ICMP..."

C'est également très utile si vous voulez voir où, le long d'une route, un port TCP est bloqué (par exemple par un pare-feu), alors que ICMP ne l'est pas.

2voto

kenorb Points 2464

Dans Bash, vous pouvez utiliser des fichiers de pseudo-appareils qui peuvent ouvrir une connexion TCP à la socket associée. La syntaxe est la suivante /dev/$tcp_udp/$host_ip/$port .

Voici un exemple simple pour tester si Memcached fonctionne :

</dev/tcp/localhost/11211 && echo Port open || echo Port closed

Voici un autre test pour voir si un site web spécifique est accessible :

$ echo "HEAD / HTTP/1.0" > /dev/tcp/example.com/80 && echo Connection successful.
Connection successful.

Pour plus d'informations, consultez le site : Guide avancé des scripts Bash : Chapitre 29. /dev et /proc .

Relié : Tester si un port sur un système distant est accessible (sans telnet) à SuperUser.

Pour d'autres exemples, voir : Comment ouvrir un socket TCP/UDP dans un shell bash ? (article).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X