Перечисление сетевых интерфейсов.

2002-02-22 Thread Mikhail Nikitin
Здравствуйте, господа!

Есть такая проблема: необходимо получить список всех активных сетевых
интерфейсов (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: Перечисление сетевых интерфейсов.

2002-02-22 Thread Victor Wagner
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: Перечисление сетевых интерфейсов.

2002-02-22 Thread Ilya Anfimov
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: Перечисление сетевых интерфейсов.

2002-02-22 Thread Victor Wagner
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: Перечисление сетевых интерфейсов.

2002-02-22 Thread Ilya Anfimov
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: Перечисление сетевых интерфейсов.

2002-02-22 Thread Victor B. Wagner
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.