Мне нужна командная строка, которая может проверить состояние порта на удаленном хосте. Я пытался, ping xxx.xxx.xxx.xxx:161
но он не распознает "хозяина". Я думал, что это был «хороший» ответ, пока не выполнил ту же команду для хоста, который, как я знаю, открыл этот порт. Это для командного файла в Windows, который проверит состояние удаленного порта, затем запустит команду, которая использует этот удаленный порт для информации, затем снова команду проверки удаленного порта, а затем команду, которая использует этот порт на следующем сервере для информации , и так далее. Я искал повсюду и думал, что ping может сделать это, но должны быть различные версии ping, я полагаю, поскольку сервер, на котором я делаю это, не показывает эту опцию.
Просто ради смеха, я попробовал веб-проверку удаленного порта с веб-сайта - и результаты были правильными как для «проблемного» сервера, так и для правильного сервера. Тем не менее, я не могу использовать это в пакетном запуске с 500+ IP-адресов серверов.
Есть ли что-то, что я могу сделать, это просто? Мои навыки Perl чрезвычайно ржавые (используйте их или потеряйте), я не знаю других языков для Windows, кроме пакетных. Unix - это мой навык, но его нужно выполнять с Widows Server 2003.
источник
ps> tnc xxx.xxx.xxx.xxx -port 161
Ответы:
Похоже, вы ищете сканер портов, такой как nmap или netcat , оба из которых доступны для Windows, Linux и Mac OS X.
Например, проверьте telnet на известном ip:
Например, найдите открытые порты от 20 до 30 на host.example.com:
источник
nc -zv host.example.com 20-30
. в противном случае нет выхода-z
дляnc
недоступна в Linux.В командной строке вы можете использовать команду telnet. Например, для подключения к IP 192.168.10.1 с портом 80,
Чтобы включить telnet в Windows 7 и выше, нажмите . В связанной статье включите telnet через панель управления -> программы и функции -> функции windows -> клиент telnet или просто запустите его в командной строке администратора:
источник
Для сценариев я обнаружил, что
curl
команда может это сделать, например:Возможно, это может не сработать для всех служб, так как
curl
в некоторых случаях может возвращать разные коды ошибок (согласно комментарию), поэтому добавление следующего условия может работать надежно:Примечание. Добавлено
-m5
для установки максимального времени ожидания соединения 5 секунд.Если вы также хотите проверить, является ли хост действительным, вам также необходимо проверить
6
код выхода:Чтобы устранить неисправность возвращенного кода ошибки, просто запустите:,
curl host:port
например:Смотрите:
man curl
полный список кодов выхода.источник
curl $IP:$PORT
yields:curl: (52) Empty reply from server
(противcurl: (7) Failed to connect
), но очень похожеnc
, я не могу| grep Empty
для этих выходных операторов, как можно было ожидать (что-то о переводах строки или отсутствии немедленного вывода?). Я предполагаю, что ваша строка условно основана на коде выхода, верно? Я на Эль Капе; может быть, в других версиях или операционных системах состояние отказа выходит,-1
а не52
?curl -s $IP:$PORT >/dev/null; if [ $? -eq 52 ]; then echo "Connected."; else echo "Fail."; fi
Нажмите Windows+ Rтип
cmd
иEnterВ командной строке введите
Если порт не открыт, это сообщение будет отображаться:
В противном случае вы попадете в открытый порт (отобразится пустой экран).
источник
Используйте команду nc,
Вы также можете использовать команду telnet
источник
nc или 'netcat' также имеет режим сканирования, который может быть полезен.
источник
Я думаю, что вы ищете Hping ( http://www.hping.org/ ), который имеет версию для Windows.
Это также очень полезно, если вы хотите увидеть, где на маршруте блокируется TCP-порт (например, с помощью брандмауэра), где ICMP может не быть.
источник
В Bash вы можете использовать файлы псевдоустройств, которые могут открыть TCP-соединение с соответствующим сокетом. Синтаксис есть
/dev/$tcp_udp/$host_ip/$port
.Вот простой пример, чтобы проверить, работает ли Memcached:
Вот еще один тест, чтобы увидеть, доступен ли конкретный веб-сайт:
Для получения дополнительной информации проверьте: Расширенное руководство по написанию сценариев Bash: Глава 29.
/dev
и/proc
.Связанный: Проверьте, доступен ли порт в удаленной системе (без telnet) в SuperUser.
Дополнительные примеры см .: Как открыть сокет TCP / UDP в оболочке bash (статья).
источник