Из скрипта bash как быстро узнать, есть ли порт 445
/ прослушивается на сервере.
Я попробовал несколько вариантов, но я хочу что-то быстрое:
1. lsof -i :445
(занимает секунды)
2. netstat -an |grep 445 |grep LISTEN
(занимает секунды)
3. telnet
(не возвращается)
4. nmap
, netcat
недоступны на сервере
Было бы хорошо узнать способ, который не перечисляет сначала и greps после этого.
netstat -lnt
(с -t
и без -a
) ограничит вывод только прослушиванием TCP-соединений. Это может немного ускорить. Вы можете добавить -4
IPv4, только если вам не нужен IPv6.
netstat -an | grep PORTNUMBER | grep -i listen
Если вывод пуст, порт не используется.
lsof
это медленно для вас, но обычно это лучшее из перечисленных вами решений. Ваше netstat
решение не очень надежно (вы можете угадать его всякий раз, когда используете grep
; в любом случае оно возвращает true, если кто-то слушает, например, 4450). telnet
и на netcat
самом деле попытаться создать соединение, которое не всегда может быть тем, что вы хотите.