Существует ли лучший способ программно получить параметры сети из Linux ОС?

Я пишу некоторые сценарии, которые должны программно получить много параметров сети из Linux ОС.

Например, names of all network interfaces, ip address, netmask, MAC address. Для беспроводного интерфейса я, возможно, также должен добраться bit rate, frequency, operating mode, transmit power, signal level, noise level, и т.д.

В настоящее время я использую развитие обычного текста и регулярное выражение для парсинга вывода инструментов командной строки Linux как ifconfig, ip, route, iw and iwconfig. Одна из проблем этого метода - то, что иногда вывод будет отличаться от того, что мы ожидали. Трудно предсказать весь возможный выходной формат для всех возможных сценариев.

Существует ли лучший способ программно получить параметры сети из Linux ОС?

1
задан 23 August 2014 в 10:33

2 ответа

Для названий всех определенных сетевых интерфейсов я просто посмотрел бы на содержание /sys/class/net каталог.

Для остальных это зависит, что Вы подразумеваете "под Linux ОС". Если Вы обращаетесь к текущим настольным версиям Ubuntu, то nmcli утилита командной строки, кажется, обеспечивает большую функциональность, которую Вы ищете, например.

$ nmcli --terse --fields FREQ,RATE,SIGNAL dev wifi list bssid XX:XX:XX:XX:XX:XX
5220 MHz:54 MB/s:70

$ nmcli --terse --fields IP4 dev list iface wlan0
IP4.ADDRESS[1]:ip = 192.168.1.16/24, gw = 192.168.1.1
IP4.DNS[1]:192.168.1.1

Если это не обеспечивает точную регулировку, в которой Вы нуждаетесь, Вы могли прокрутить свое собственное путем взаимодействия через интерфейс к DBUS с любым использованием командной строки dbus-send и/или dbus-monitor инструменты или C или Python DBUS API - документация является немного тонкой, но существуют одно или два полезных учебных руководства, например, Учебное руководство Dbus - Забава с Администратором сети

2
ответ дан 10 November 2019 в 19:22

это может помочь (если Вы не возражаете против Python):

http://it-ebooks.info/book/3515/

страница 66 (79)

начиная с этого рецепта полагается на sys-вызовы c, можно быть очень более обеспеченной записью модуля в C.

1
ответ дан 10 November 2019 в 19:22

Другие вопросы по тегам:

Похожие вопросы: