J'ai besoin d'une ligne de commande qui peut 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". J'ai pensé que c'était une "bonne" réponse jusqu'à ce que j'aie fait la même commande contre un hôte que je connais a ce port ouvert. Il s'agit d'un fichier de commandes sous Windows qui vérifiera l'état du port distant, puis exécutera une commande qui utilise ce port distant pour plus d'informations, puis la commande de vérification du port distant à nouveau, puis la commande qui utilise ce port sur le serveur suivant pour plus d'informations , etc. J'ai regardé partout et j'ai pensé que le ping pourrait le faire, mais il doit y avoir différentes versions de ping, je suppose que le serveur sur lequel je fais cela ne montre 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 à la fois pour le serveur "problématique" et pour le serveur correct. Cependant, je ne peux pas l'utiliser dans une exécution par lots avec plus de 500 adresses IP de serveur.
Puis-je faire quelque chose de simple? Mes compétences Perl sont extrêmement rouillées (utilisez-le ou perdez-le), je ne connais aucun autre langage basé sur Windows à l'exception du batch. Unix est ma compétence, mais cela doit être exécuté à partir de Widows Server 2003.
la source
ps> tnc xxx.xxx.xxx.xxx -port 161
Réponses:
Vous semblez rechercher un scanner de port tel que nmap ou netcat , tous deux disponibles pour Windows, Linux et Mac OS X.
Par exemple, recherchez telnet sur une adresse IP connue:
Par exemple, recherchez les ports ouverts de 20 à 30 sur host.example.com:
la source
nc -zv host.example.com 20-30
. sinon il n'y a pas de sortie-z
pournc
n'est pas disponible sous Linux.Dans l'invite de commande, vous pouvez utiliser la commande telnet. Par exemple, pour vous connecter à l'IP 192.168.10.1 avec le port 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:
la source
À des fins de script, j'ai trouvé que la
curl
commande peut le faire, par exemple:Il est possible que cela ne fonctionne pas pour tous les services, car cela
curl
peut renvoyer différents codes d'erreur dans certains cas (selon le commentaire), donc l'ajout de la condition suivante pourrait fonctionner de manière fiable:Remarque: ajouté
-m5
pour définir le délai de connexion maximal de 5 secondes.Si vous souhaitez vérifier également si l'hôte est valide, vous devez également vérifier le
6
code de sortie:Pour dépanner le code d'erreur renvoyé, exécutez simplement:,
curl host:port
par exemple:Voir:
man curl
pour la liste complète des codes de sortie.la source
curl $IP:$PORT
donne:curl: (52) Empty reply from server
(contrecurl: (7) Failed to connect
) mais un peu commenc
, je ne peux pas| grep Empty
pour ces déclarations de sortie comme on pourrait s'y attendre (quelque chose à propos de nouvelles lignes ou de manque de sortie immédiate?). Je suppose que votre ligne est un conditionnel basé sur le code de sortie, non? Je suis sur El Cap; peut-être que dans d'autres versions ou systèmes d'exploitation, l'état d'échec se termine-1
plutôt que52
?curl -s $IP:$PORT >/dev/null; if [ $? -eq 52 ]; then echo "Connected."; else echo "Fail."; fi
Appuyez sur Windows+ Rtapez
cmd
etEnterDans le type d'invite de commande
Si le port n'est pas ouvert, ce message s'affiche:
Sinon, vous serez emmené dans le port ouvert (un écran vide s'affichera)
la source
Utilisez la commande nc,
Vous pouvez également utiliser la commande telnet
la source
nc ou 'netcat' a également un mode de scan qui peut être utile.
la source
Je pense que vous recherchez Hping ( http://www.hping.org/ ), qui a une version Windows.
C'est également très utile si vous voulez voir où le long d'une route où un port TCP est bloqué (comme par un pare-feu), là où ICMP peut ne pas être.
la source
Dans Bash, vous pouvez utiliser des fichiers pseudo-périphériques qui peuvent ouvrir une connexion TCP vers le socket associé. La syntaxe est
/dev/$tcp_udp/$host_ip/$port
.Voici un exemple simple pour tester si Memcached est en cours d'exécution:
Voici un autre test pour voir si un site Web spécifique est accessible:
Pour plus d'informations, consultez: Advanced Bash-Scripting Guide: Chapter 29.
/dev
et/proc
.Connexes: testez si un port sur un système distant est accessible (sans telnet) chez SuperUser.
Pour plus d'exemples, consultez: Comment ouvrir un socket TCP / UDP dans un shell bash (article).
la source