Проверка состояния одного порта на удаленном хосте

Мне нужна командная строка, которая может проверить состояние порта на удаленном хосте. Я попробовал ping xxx.xxx.xxx.xxx.xxx:161, но он не распознает "хост". Я думал, что это "хороший" ответ, пока не выполнил ту же команду на хосте, у которого, как я знаю, открыт этот порт. Это для пакетного файла в Windows, который будет проверять состояние удаленного порта, затем запускать команду, которая использует этот удаленный порт для получения информации, затем снова команду проверки удаленного порта, затем команду, которая использует этот порт на следующем сервере для получения информации, и так далее. Я искал везде и думал, что ping может сделать это, но должны быть различные версии ping, я полагаю, так как сервер, на котором я это делаю, не показывает эту опцию.

Чтобы посмеяться, я попробовал веб-программу проверки удаленных портов с веб-сайта - и результаты были правильными как для "проблемного", так и для правильного сервера. Однако я не могу использовать его в пакетной программе с 500+ IP-адресами серверов.

Есть ли что-то простое, что я могу сделать? Мои навыки работы с Perl чрезвычайно ржавы (используй или потеряешь), я не знаю никаких других языков на базе Windows, кроме пакетного. Unix - это мой навык, но это должно выполняться с Widows Server 2003.

Комментарии к вопросу (5)

Похоже, вам нужен сканер портов, такой как nmap или netcat, оба из которых доступны для Windows, Linux и Mac OS X.

Например, проверьте наличие telnet на известном ip:

nmap -A 192.168.0.5/32 -p 23

Например, поищите открытые порты от 20 до 30 на host.example.com:

nc -z host.example.com 20-30
Комментарии (7)

В командной строке можно использовать команду telnet.. Например, для подключения к IP 192.168.10.1 порт 80,

telnet 192.168.10.1 80

Чтобы включить telnet в Windows 7 и выше нажмите. Из связанного статьи, включить telnet через Панель управления и GT; программы и компоненты -и GT; функции -&GT с электроприводом; telnet-клиент, или просто запустите в администратора строке:

dism /online /Enable-Feature /FeatureName:TelnetClient
Комментарии (3)

В работе со скриптами, я'ве обнаружили, что команды завиток можете сделать это, например:

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

Возможно, он не выиграл't работа для всех служб, как завиток может возвращать разные коды ошибок в некоторых случаях (как в комментарии), поэтому добавлять следующее условие может работать в надежный способ:

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

<суп>Примечание: добавлена-М5`, чтобы задать максимальное время подключения в 5 секунд.</SUP и ГТ;

Если вы хотите проверить, также ли хозяин действует, нужно проверить для 6 код выхода, а также:

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

Для устранения неполадок код ошибки, просто запустите: завиток хост:порт, например:

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

Вижу: человек завиток для полный список кодов выхода.

Комментарии (3)

Пресс <и>окна</роз> + <и>Р</КБД> тип cmd и <и>введите</роз>

В командной строке введите

telnet "machine name/ip" "port number"

Если порт не открыт, это сообщение будет отображаться:

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

В противном случае вы будете принимать в открытый порт (пустой экран)

Комментарии (4)

Используйте команду НЗ,

nc -zv  

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

Вы также можете использовать команду telnet

telnet  port
Комментарии (0)

nc или 'netcat' также имеет режим сканирования, который может быть полезен.

Комментарии (1)

В bash, вы можете использовать псевдо-устройства файлов, которые может открыть TCP-соединение с связанного сокета. Синтаксис как/dev/$tcp_udp/$host_ip/$порт.

Вот простой пример для проверки memcached это работает:

Комментарии (1)

Я думаю, вы ищете Hping (http://www.hping.org/), который имеет версию для Windows.

"Интерфейс похож на интерфейс команды ping(8) unix команды, но hping't только может посылать эхо-запросы ICMP. Он поддерживает TCP, UDP, ICMP..."

Это также очень полезно, если вы хотите увидеть, где на маршруте TCP-порт блокируется (например, брандмауэром), а ICMP - нет.

Комментарии (0)