![]() |
Модераторы: ginnie, korob2001 |
![]() ![]() ![]() |
|
BitCat |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
Господа, ситуация:
нужно определить, соответствует ли внешний IP (н-р, 217.216.214.213) localhost'у, т.е. 127.0.0.1. проблема решается легко с помощью определения всех сетевых интерфейсов в системе и всех соответствующих для каждого интерфейса IP адресов. но вот с последним проблемы... в системе присутствует N-ное кол-во сетевых интерфейсов: # ifconfig: em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=b<RXCSUM,TXCSUM,VLAN_MTU> inet 192.168.6.82 netmask 0xfffffff8 broadcast 192.168.6.87 inet6 fe80::20e:cff:fe4a:53f2%em0 prefixlen 64 scopeid 0x1 inet 217.216.214.213 netmask 0xffffffff broadcast 217.216.214.213 ether 00:0e:0c:4a:53:f2 media: Ethernet autoselect (100baseTX <full-duplex>) status: active em1: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500 options=b<RXCSUM,TXCSUM,VLAN_MTU> ether 00:0e:0c:4a:53:f1 media: Ethernet autoselect status: no carrier lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 inet 127.0.0.1 netmask 0xff000000 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 ................... для каждого интерфейса нужно определить ВСЕ соответствующие ему IP адреса, т.е. для em0 - 217.216.214.213, 192.168.6.82, 192.168.6.87. Адреса 192.168.6.82, 192.168.6.87 (выделены синим) - определяются без проблем с помощью модуля IO::Interface, но вот 217.216.214.213 (а ведь может еще с десяток адресов быть для этого интерфейса) - непонятно как вытащить. Само собой, использовать вызов системных утилит нельзя. Нужно решить проблему на уровне исходного текста. Если у кого есть какие идеи - интересно послушать... |
|||
|
||||
sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 3 Всего: 28 |
BitCat,
![]() Это сообщение отредактировал(а) sharq - 22.6.2006, 00:51 -------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
BitCat |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
sharq, спасибо, но вызов (и парсинг) ifconfig - крайний вариант.
|
|||
|
||||
sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 3 Всего: 28 |
BitCat,
ну, а я что сделал? -------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
BitCat |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 16.6.2006 Репутация: нет Всего: нет |
sorry. "на уровне исходного текста" имелось в виду не вызов ifconfig и парсинг его ответа, а решить это с помощью системных ф-ий (типа ioctl с каким-нибудь хитрым параметром), к-рая возвращает спиок всех алиасов сетевого интерфейса. а то ф-ии IO::Interface возвращают только внутренний локальный IP и широковещательный - и все. а если сетевому интерфейсу сопоставлены алиасы, то хз как их выцепить.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl: Системное программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |