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.

158voto

Glenn Points 3343

Vous semblez être à la recherche d'un scanner de port tel que nmap o netcat qui sont tous deux disponibles pour Windows, Linux et Mac OS X.

Par exemple, vérifiez le telnet sur un ip connu :

nmap -A 192.168.0.5/32 -p 23

Par exemple, recherchez les ports ouverts de 20 à 30 sur host.example.com :

nc -z host.example.com 20-30

130voto

Naveen Yedugani Points 151

Dans l'invite de commande, vous pouvez utiliser la commande telnet Par exemple, pour se connecter à l'IP 192.168.10.1 avec le port 80,

telnet 192.168.10.1 80

Pour activer telnet dans Windows 7 et supérieur cliquez sur . À partir de l'article lié, activez telnet via le panneau de configuration -> programmes et fonctionnalités -> fonctionnalités Windows -> client telnet, ou exécutez simplement ceci dans une invite d'administration :

dism /online /Enable-Feature /FeatureName:TelnetClient

28voto

kenorb Points 2464

Pour les scripts, j'ai trouvé que curl La commande peut le faire, par exemple :

$ curl -s localhost:80 >/dev/null && echo Connected. || echo Fail.
Connected.
$ curl -s localhost:123 >/dev/null && echo Connected. || echo Fail.
Fail.

Il est possible que cela ne fonctionne pas pour tous les services, car curl peut renvoyer des codes d'erreur différents dans certains cas (selon le commentaire), donc ajouter la condition suivante pourrait fonctionner de manière fiable :

[ "$(curl -sm5 localhost:8080 >/dev/null; echo $?)" != 7 ] && echo OK || echo FAIL

Note : Ajouté -m5 pour définir un délai de connexion maximum de 5 secondes.

Si vous souhaitez également vérifier si l'hôte est valide, vous devez vérifier les éléments suivants 6 ainsi que le code de sortie :

$ curl -m5 foo:123; [ $? != 6 -a $? != 7 ] && echo OK || echo FAIL
curl: (6) Could not resolve host: foo
FAIL

Pour résoudre le problème du code d'erreur renvoyé, il suffit d'exécuter : curl host:port par exemple :

$ curl localhost:80
curl: (7) Failed to connect to localhost port 80: Connection refused

Voir : man curl pour la liste complète des codes de sortie.

24voto

Leo Points 59

Appuyez sur Windows + R type cmd et Enter

Dans l'invite de commande, tapez

telnet "machine name/ip" "port number"

Si le port n'est pas ouvert, ce message s'affiche :

"Connecting To "machine name"...Could not open connection to the host, on port "port number":

Sinon, vous serez amené au port ouvert (un écran vide s'affichera).

21voto

minhas23 Points 365

Utilisez la commande nc,

nc -zv <hostname/ip> <port/port range>

For example,
nc -zv localhost 27017-27019
or
nc -zv localhost 27017

Vous pouvez également utiliser la commande telnet

telnet <ip/host> port

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