Netstat в Fedora не перечисляет простой сервер Netcat, Ubuntu делает
Я открываю простой TCP-сервер с netcat
:
$ netcat -l -p 1234
Затем я хочу проверить, указан ли он среди прослушивающих tcp-соединений netstat
:
$ netstat -lt
Если я введу предыдущие команды в системе Ubuntu
$ uname -v
#65~14.04.1-Ubuntu SMP Tue Apr 19 18:57:09 UTC 2016
мой сервер правильно указан в списке:
$ netstat -lt
...
tcp 0 0 *:1234 *:* LISTEN
...
Если я делаю то же самое в системе Fedora:
$ uname -r
3.17.4-301.fc21.x86_64
в этом случае я не могу найти свой сервер:
$ netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:search-agent 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp6 0 0 [::]:search-agent [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
Эта проблема также возникает, когда я пишу программу, открывающую сокет сервера, и мне нужно написать тест, чтобы автоматически проверить, прослушивает ли сервер правильный порт (работает в Ubuntu, а не в Fedora). Можно ли сделать такую проверку на Fedora, используя netstat
совсем?
2 ответа
Ubuntu, вероятно, имеет другие стандартные переключатели для netstat, чем fedora, поэтому вы видите "символические" имена портов вместо номеров портов. Добавьте ключ -n в netstat fedora (IIRC), чтобы использовать числовые порты.
Вам необходимо проверить, существует ли какая-либо другая служба - сопоставление портов для номера порта 1234
, в /etc/services
конфигурационный файл.
Пример.
На OEL 6
Я вижу, порт 1234 сопоставлен с сервисом под названием search-agent
, Теперь ниже результаты говорят сами за себя
# netstat -l | grep -i search-agent
#
# nc -l 1234
На другом терминале
#netstat -l | grep -i search-agent
tcp 0 0 *:search-agent *:* LISTEN