Перечисление сетевых интерфейсов.
Здравствуйте, господа! Есть такая проблема: необходимо получить список всех активных сетевых интерфейсов (eth0, lo, eth1.. etc), а также присвоенные им ip-адреса при условии, что программа запускается от обычного пользователя а также (возможно), что в /proc/ прочитать ничего нельзя (/proc/net/dev.. etc...) Чем бы это дело обстряпать? (Прога пишется на С++) Михаил -- UNIX is very user friendly. It's just very selective about who its friends are.
Re: Перечисление сетевых интерфейсов.
On Fri, 22 Feb 2002, Mikhail Nikitin wrote: > From: Mikhail Nikitin <[EMAIL PROTECTED]> > Subject: Перечисление сетевых интерфейсов. > > Здравствуйте, господа! > > Есть такая проблема: необходимо получить список всех активных сетевых > интерфейсов (eth0, lo, eth1.. etc), а также присвоенные им ip-адреса при > условии, что программа запускается от обычного пользователя а также > (возможно), что в /proc/ прочитать ничего нельзя (/proc/net/dev.. etc...) > > Чем бы это дело обстряпать? (Прога пишется на С++) Сделать сокет и подергать за его ioctl-и. Есть перловый модуль IO::Interface на CPAN. Его стоит взять и прочитать. Исходник там, кстати, C-шный. А в книжке Линкольна Штайна "Сетевое программирование на Perl" есть перловый эквивалент. -- Victor Wagner [EMAIL PROTECTED] Chief Technical Officer Office:7-(095)-748-53-88 Communiware.Net Home: 7-(095)-135-46-61 http://www.communiware.net http://www.ice.ru/~vitus
Re: Перечисление сетевых интерфейсов.
On Fri, Feb 22, 2002 at 05:11:57PM +0300, Mikhail Nikitin wrote: > Здравствуйте, господа! > > Есть такая проблема: необходимо получить список всех активных сетевых Тоже мне проблема. > интерфейсов (eth0, lo, eth1.. etc), а также присвоенные им ip-адреса при > условии, что программа запускается от обычного пользователя а также > (возможно), что в /proc/ прочитать ничего нельзя (/proc/net/dev.. etc...) > > Чем бы это дело обстряпать? (Прога пишется на С++) (Посмотреть в исходники, например, ifconfig). А вообще -- man 7 netdevice, man 7 ip. Но это вроде бы совсем не портабельно. btw, А никто не знает -- почему это в potato у man ключика -K нет? А как это исправить?
Re: Перечисление сетевых интерфейсов.
On Fri, 22 Feb 2002, Ilya Anfimov wrote: > (Посмотреть в исходники, например, ifconfig). Так я и советовал исходники на perl почитать, потому что они компактные. > А вообще -- man 7 netdevice, man 7 ip. Но это вроде бы совсем не > портабельно. > > btw, А никто не знает -- почему это в potato у man ключика -K > нет? А как это исправить? А почему у меня есть? man-db: /usr/bin/man dpkg -l man-db ii man-db 2.3.16-4 Display the on-line manual. -- Victor Wagner [EMAIL PROTECTED] Chief Technical Officer Office:7-(095)-748-53-88 Communiware.Net Home: 7-(095)-135-46-61 http://www.communiware.net http://www.ice.ru/~vitus
Re: Перечисление сетевых интерфейсов.
On Fri, Feb 22, 2002 at 08:13:16PM +0300, Victor Wagner wrote: > On Fri, 22 Feb 2002, Ilya Anfimov wrote: > > > (Посмотреть в исходники, например, ifconfig). > > Так я и советовал исходники на perl почитать, потому что они компактные. Наличие этого кода в каких-то исходниках на perl вообще говоря неочевидно, между тем наличие его в ifconfig -- вполне очевидно. > > > А вообще -- man 7 netdevice, man 7 ip. Но это вроде бы совсем не > > портабельно. > > > > btw, А никто не знает -- почему это в potato у man ключика -K > > нет? А как это исправить? > > А почему у меня есть? Не знаю. А точно есть? > > man-db: /usr/bin/man > dpkg -l man-db > ii man-db 2.3.16-4 Display the on-line manual. [EMAIL PROTECTED]:~$dpkg -S `which man` man-db: /usr/bin/man [EMAIL PROTECTED]:~$ls -l `which man` -rwxr-xr-x3 root root 4880 Июн 2 2001 /usr/bin/man [EMAIL PROTECTED]:~$ls -l /usr/lib/man-db/man -rwsr-xr-x1 man root83340 Июн 2 2001 /usr/lib/man-db/man [EMAIL PROTECTED]:~$dpkg -l man-db Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Название Версия Описание +++-==-==- ii man-db 2.3.16-4 Display the on-line manual. [EMAIL PROTECTED]:~$man -K netlink man: invalid option -- K usage: man [-c|-f|-k|-w|-tZT device] [-adlhu7V] [-Mpath] [-Ppager] [-Slist] [-msystem] [-pstring] [-Llocale] [-eextension] [section] page ... .
Re: Перечисление сетевых интерфейсов.
On Fri, 22 Feb 2002, Ilya Anfimov wrote: > > Так я и советовал исходники на perl почитать, потому что они компактные. > > Наличие этого кода в каких-то исходниках на perl вообще говоря > неочевидно, между тем наличие его в ifconfig -- вполне очевидно. Тем не менее, найти нужный код в библиотеке для Perl специально заточенной под решение данной задачи, несколько проще, чем выкапывать его из системной утилиты NAME IO::Interface - Perl extension for access to network card configuration information SYNOPSIS use IO::Socket; use IO::Interface qw(:flags); my $s = IO::Socket::INET->new(Proto => 'udp'); my @interfaces = $s->if_list; for my $f (@interfaces) { print "interface = $if\n"; my $flags = $s->if_flags($if); print "addr = ",$s->if_addr($if),"\n", "broadcast = ",$s->if_broadcast($if),"\n", "netmask = ",$s->if_netmask($if),"\n", "dstaddr = ",$s->if_dstaddr($if),"\n", "hwaddr =",$s->if_hwaddr($if),"\n"; ... > > > btw, А никто не знает -- почему это в potato у man ключика -K > > > нет? А как это исправить? > > > > А почему у меня есть? > > Не знаю. А точно есть? Стормозил. Я подумал, что ты имеешь в виду -k, который apropos. По контексту он весьма подходил. А что делает -К, а то в Solaris его тоже нету, а никаких юн... Ах, да один редхат нашел. Да, таким ключиком только самоубивца пользоваться может. В Debian гораздо лучший мех есть - dwww, на который натравливается потом, какой-нибудь mnogosearch или htdig.