Показать параметры сокета - PullRequest
10 голосов
/ 01 декабря 2009

Как узнать из оболочки, какие параметры сокета установлены? Особенно Мне интересно знать, установлен ли SO_BROADCAST?

Ответы [ 2 ]

8 голосов
/ 01 декабря 2009

Вы можете использовать lsof(8). Если PID - это идентификатор процесса, а FD - это номер дескриптора файла интересующего вас сокета, вы можете сделать это:

lsof -a -p PID -d FD -T f

Чтобы отобразить все сокеты IPv4 процесса:

lsof -a -p PID -i 4 -T f

Это напечатает опции сокета с SO=, среди прочего. Обратите внимание, что если параметры не заданы, вы получите пустую строку, поэтому вы увидите что-то вроде SO=PQLEN=0 и т. Д. Чтобы проверить SO_BROADCAST, просто grep для строки SO_BROADCAST после SO=, например

if lsof -a -p PID -d FD -T f | grep -q 'SO=[^=]*SO_BROADCAST'; then
    # socket has SO_BROADCAST
else
    # it doesn't
fi
4 голосов
/ 28 августа 2017

В Linux вы можете использовать модуль ядра knetstat для проверки параметров сокетов, включая SO_BROADCAST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...