LINUX.ORG.RU

Программно забрать у systemd состояние lldp neighbours

 ,


0

2

Мы делаем прошивку и хочется у systemd забирать состояние портов и показывать, что в них воткнуто.

Я нашел только способ:

т.е. пойти и запросить эти данные, запустив команду.

К сожалению json формата не завезли.

Ещё в /run/systemd/netif/lldp можно увидеть файл с названием в виде числа. Номер растет и кажется отвечает за версию состояния.

Вопрос: как правильно забирать этот список? Дергать программу не хочется, потому что парсить её вывод достаточно нестабильно и туда любит просачиваться дополнительный вывод, который разрушит структуру ответа.

Файл на диске можно мониторить через inotify, но у них неизвестная структура.

Как правильно?

Номер растет и кажется отвечает за версию состояния.

Внутренний номер линка (виден в D-Bus).

Вопрос: как правильно забирать этот список? Дергать программу не хочется

Кажется, сам LLDP в D-Bus ещё не подвезли. Пробуй networkctl lldp --no-legend, менее костыльного способа не вижу.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от max_lapshin

Нормальное решение, если не обновят вид того, что парсишь. А гарантии дать никто не даст. Если бы программы не меняли свой консольный вывод, то это был бы нормальным способом всегда, но увы

Просто проверяй каким-то способом число столбцов в тексте вывода, тогда будет уверенность что их назначение хотя бы не поменялось

Я работал с LLDP через SNMP, там всегда формат одинаков

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 2)
Ответ на: комментарий от Anoxemian

он просто складывает в папку файлы с последним прилетевшим из сети lldp пакетом. Можно и его попарсить.

max_lapshin ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.