Я хочу посмотреть, прослушивает ли что-то порт на локальном хосте. Я собирался использовать nc
и проверьте код выхода.
Что-то вроде этого:
echo "" | nc localhost 14881
echo $?
Есть другие предложения?
lsof -i: 14881
Возможно, netstat будет лучше, потому что порт может не прослушивать localhost или он может быть заблокирован iptables:
netstat -ln | grep :14881
echo $?
Grep завершит работу с 1, если совпадения нет. Если вам нужны только tcp и / или udp, добавьте в netstat переключатели -u или -t.
Если вы root:
netstat -lnp | grep ':14881 '
netstat -ano | egrep LISTEN | egrep tcp | egrep $ PORTNUMBER
sudo ss -lntup
сообщит вам, что прослушивает TCP / UDP-соединения - вы можете фильтровать вывод по своему усмотрению (например, прослушивание 127.0.0.1, :: 1, 0.0.0.0).
Если у вас есть питон, вы также можете создать тупой сканер портов (правда, полезный только для TCP):
import socket
for p in range(1,2**16):
try:
s = socket.create_connection(('127.0.0.1',p))
print "Listener on tcp/{}".format(p)
except:
continue
Я использую это в bash для выхода, когда никто не слушает этот порт.
$port="14881"
if [[ $(netstat -ltn | grep ":${port} " | wc -l) -eq "0" ]] ; then echo "Port $port not listened to" && exit 1; fi