Проверка состояния одного порта на удаленном хосте
Мне нужна командная строка, которая может проверить состояние порта на удаленном хосте. Я попробовал ping xxx.xxx.xxx.xxx.xxx:161
, но он не распознает "хост". Я думал, что это "хороший" ответ, пока не выполнил ту же команду на хосте, у которого, как я знаю, открыт этот порт. Это для пакетного файла в Windows, который будет проверять состояние удаленного порта, затем запускать команду, которая использует этот удаленный порт для получения информации, затем снова команду проверки удаленного порта, затем команду, которая использует этот порт на следующем сервере для получения информации, и так далее. Я искал везде и думал, что ping может сделать это, но должны быть различные версии ping, я полагаю, так как сервер, на котором я это делаю, не показывает эту опцию.
Чтобы посмеяться, я попробовал веб-программу проверки удаленных портов с веб-сайта - и результаты были правильными как для "проблемного", так и для правильного сервера. Однако я не могу использовать его в пакетной программе с 500+ IP-адресами серверов.
Есть ли что-то простое, что я могу сделать? Мои навыки работы с Perl чрезвычайно ржавы (используй или потеряешь), я не знаю никаких других языков на базе Windows, кроме пакетного. Unix - это мой навык, но это должно выполняться с Widows Server 2003.
Похоже, вам нужен сканер портов, такой как nmap или netcat, оба из которых доступны для Windows, Linux и Mac OS X.
Например, проверьте наличие telnet на известном ip:
Например, поищите открытые порты от 20 до 30 на host.example.com:
В командной строке можно использовать команду telnet.. Например, для подключения к IP 192.168.10.1 порт 80,
Чтобы включить telnet в Windows 7 и выше нажмите. Из связанного статьи, включить telnet через Панель управления и GT; программы и компоненты -и GT; функции -> с электроприводом; telnet-клиент, или просто запустите в администратора строке:
В работе со скриптами, я'ве обнаружили, что команды
завиток
можете сделать это, например:Возможно, он не выиграл't работа для всех служб, как
завиток
может возвращать разные коды ошибок в некоторых случаях (как в комментарии), поэтому добавлять следующее условие может работать в надежный способ:<суп>Примечание: добавлена-М5`, чтобы задать максимальное время подключения в 5 секунд.</SUP и ГТ;
Если вы хотите проверить, также ли хозяин действует, нужно проверить для
6
код выхода, а также:Для устранения неполадок код ошибки, просто запустите:
завиток хост:порт
, например:Вижу: человек завиток для полный список кодов выхода.
Пресс <и>окна</роз> + <и>Р</КБД> тип
cmd
и <и>введите</роз>В командной строке введите
Если порт не открыт, это сообщение будет отображаться:
В противном случае вы будете принимать в открытый порт (пустой экран)
Используйте команду НЗ,
Вы также можете использовать команду telnet
nc или 'netcat' также имеет режим сканирования, который может быть полезен.
В bash, вы можете использовать псевдо-устройства файлов, которые может открыть TCP-соединение с связанного сокета. Синтаксис
как/dev/$tcp_udp/$host_ip/$порт
.Вот простой пример для проверки memcached это работает:
Я думаю, вы ищете Hping (http://www.hping.org/), который имеет версию для Windows.
Это также очень полезно, если вы хотите увидеть, где на маршруте TCP-порт блокируется (например, брандмауэром), а ICMP - нет.