Мне нужно улучшить этот скрипт:
nmap -PN -p 9292 -sN 192.68.12.14 | grep "open"
Мне нужно проверить подключение к ip 192.168.15.24
через порт 9292
.
Если порт открыт, выведите «порт 9292 открыт»
Если порт закрыт, выведите «порт 9292 закрыт»
Результат будет взят из Айсинга сделать проверку.
Есть идеи?
Помимо правильного ответа @ DopeGhoti с использованием netcat, ваш скрипт можно улучшить, изменив некоторые параметры Nmap и добавив несколько.
-sN
означает «сканирование TCP NULL», что является очень необычным режимом сканирования необработанных сокетов, требующим привилегий root. Он также обладает странным свойством только маркировать порты как «закрытые» или «нефильтрованные», но никогда не «открытые». Вы, вероятно, хотите вместо этого обычное сканирование TCP Connect, используя опцию -sT
. PTR
) по умолчанию. Избегайте этой ненужной задержки с опцией -n
. -oG
) или XML (-oX
) . -PN
является старым (устарело в 2010 году) правописанием -Pn
. Он пропускает этап обнаружения хоста, поэтому, вероятно, хорошая идея для вашего сценария. Пример со всеми этими изменениями:
nmap -n -Pn -sT -p 9292 -oG - | grep '/open/'
Для этого требуется пакет netcat
:
if nc -z 192.68.12.14 9292; then
echo "Port is open"
else
echo "Port is closed"
fi
nc -z
попытается установить соединение с указанным хостом и портом; в случае успеха он возвращает 0
код завершения и ненулевой код в противном случае. На самом деле он ничего не выводит на терминал. Чтобы получить желаемый результат, я использую оператор if
для проверки результатов проверки соединения и echo
соответствующий результат для терминала.