nixp.ru v3.0

26 мая 2017,
пятница,
08:34:44 MSK

DevOps с компанией «Флант»
wiener написал 23 мая 2005 года в 19:47 (322 просмотра) Ведет себя как мужчина; открыл 30 тем в форуме, оставил 76 комментариев на сайте.

Доброго времени суток.

Есть несколько вопросов:

1) Как правильнее узнать присутствующие сетевые интерфейсы (eth0, eth1, и пр.);

2) Как узнать размер MTU для конкретного интерфейса…

Заранее благодарен.

Olej
wiener
1) Как правильнее узнать присутствующие сетевые интерфейсы (eth0, eth1, и пр.);

2) Как узнать размер MTU для конкретного интерфейса…

1. это (даже имена интерфейсов) — очень зависит от клона UNIX:

# uname -a

- в студию… ;)

Я бы вам мог рассказать, как это делается в QNX, но вряд ли вас это заинтересует ;).

2. ifconfig

metal

Самый больщой авторитет в этой области Стивенс советует создать сокет и применить к нему ioctl SIOCGIFCONF.

wiener
Olej
1. это (даже имена интерфейсов) — очень зависит от клона UNIX:

# uname -a

- в студию… ;)

Я бы вам мог рассказать, как это делается в QNX, но вряд ли вас это заинтересует ;).

2. ifconfig

1. Система Linux x86

2. Из программы ?! Может не надо ?!

Genie

в гугль, искать архив программы ifstatus (тупо: гугль://«ifstatus.tar.gz».)

из описания ifstatus:

Ifstatus retrieves the names of all of your network interfaces and does some comparisons with your OS header file definitions to see if any of them are in 'promiscuous' mode. Run it from cron and you’ll get email like this when it finds an interface running in promiscuous mode

функциональность несколько бОльшая, чем надо, но.. ;)

отрывать куда проще, чем прикручивать.

Olej
wiener
2. Из программы ?! Может не надо ?!

В вопросе не было ничего сказано про программу ;).

Но если и изпрограммы? Есть такой «добрый снобизм», состоящий в том, что:

- если хочется придать программе максимальную элегантность — пользуем fork()…

- если хотим, чтоб все кругом говорили «ну и крут же этот парень» — используем exec(), а ещё лучше spawn()…

- если нужно, чтоб просто добротно работало — может и system() сгодится… ;).

Вам ведь в программе, скорее всего, эта информация нужна разово в инициализирующей части… тогда самый примитивный разовый вызов popen( «ifconfig -a», «w» ) вам сразу выкинет информацию и обо всех имеющихся интерфейсах, и об MTU…

«Вам «шашечки», или ехать?"(с) ;)

anonymous
Olej
В вопросе не было ничего сказано про программу ;).

Но если и изпрограммы? Есть такой «добрый снобизм», состоящий в том, что:

- если хочется придать программе максимальную элегантность — пользуем fork()…

- если хотим, чтоб все кругом говорили «ну и крут же этот парень» — используем exec(), а ещё лучше spawn()…

- если нужно, чтоб просто добротно работало — может и system() сгодится… ;).

Вам ведь в программе, скорее всего, эта информация нужна разово в инициализирующей части… тогда самый примитивный разовый вызов popen( «ifconfig -a», «w» ) вам сразу выкинет информацию и обо всех имеющихся интерфейсах, и об MTU…

«Вам «шашечки», или ехать?"(с) ;)

Не надо лишний раз применять создание нового процесса и вызов программы без надобности, если можно обойтись более правильными с точки зрения безопасности методами. Достаточно почитать Стивенса.