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