Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > определить IP адресс ПК


Автор: bronislav 22.8.2008, 14:36
Необходимо определить ip адресс компа, на котором запущен скрипт.
пытался делать так:

Код

system "ipconfig > $username.ip";
open(IP_FILE,"$username.ip");
while(<IP_FILE>) {
    m!(ip)*(\d+.\d+.\d+.\d+)!i;
    print $1." ".$2."\n";
}
close(IP_FILE)


но выводятся не только адресса, но и маски подсети и шлюз.

как быть? может есть способ по проще?

Автор: shamber 22.8.2008, 14:38
bronislav, юзайте поиск обсуждали тут уже

Добавлено @ 14:39
Блин с поиском косяки какие-то, не могу найти темы где это обсуждали smile

Добавлено @ 14:42
ЗЫ с поиском все нормуль smile просто раздел другой
http://forum.vingrad.ru/forum/topic-206397.html

Добавлено @ 14:42
Или http://forum.vingrad.ru/forum/topic-186629/kw-адресс.html <- скорее всего это ваш вариант

Автор: bronislav 22.8.2008, 14:44
Цитата(shamber @  22.8.2008,  13:38 Найти цитируемый пост)
bronislav, юзайте поиск обсуждали тут уже


В поиске я нашел только как выделить из файла ip-адреса.
Но под маску попадает не только ip адрес ПК, но и маска подсети и адресс шлюза

Добавлено через 9 минут и 58 секунд
Цитата(shamber @  22.8.2008,  13:38 Найти цитируемый пост)
Добавлено @ 13:42
ЗЫ с поиском все нормуль smile просто раздел другой
посмотрите здесь

Добавлено @ 13:42
Или здесь <- скорее всего это ваш вариант


Мне не надо открывать сокеты.

IP адрес мне нужен только для того, что бы записать его в лог

Автор: shamber 22.8.2008, 14:54
Уважаемый bronislav, пройдите по перечисленным ссылкам

Автор: bronislav 22.8.2008, 15:06
Цитата(shamber @  22.8.2008,  13:54 Найти цитируемый пост)
Уважаемый bronislav, пройдите по перечисленным ссылкам 


Я сходил по ссылкам, оторые вы указали.

по первой ссылке ставилась задача определить внешний ип, но мне не надо определить внутренний ип (локальная сеть).

по сторой ссылке человек пишет ФТП и открывает сокет, что мне тоже не подходит, ибо мне его некуда открывать.

я пытался парсить вывод ipconfig, но видимо регулярку не совсем верно составил.

Автор: shamber 22.8.2008, 15:42
Уважаемый bronislav, прошу прощения, за введение Вас в заблеждение. Но про регулярку стоило написать в самом начале

Автор: bronislav 22.8.2008, 15:45
Цитата(shamber @  22.8.2008,  14:42 Найти цитируемый пост)
Уважаемый bronislav, прошу прощения, за введение Вас в заблеждение. Но про регулярку стоило написать в самом начале 

если бы вы посмотрели на ко, который я привел, то удвидели бы там регулярку и не начали бы предлагать варианты из воздуха

Автор: shamber 22.8.2008, 15:48
 smile bronislav, еще раз прошу прощения
у меня нет возможности выполнить эту команду. Пожалуйста приведите пример вывода программы .

Автор: bronislav 22.8.2008, 16:20
Цитата(shamber @  22.8.2008,  14:48 Найти цитируемый пост)
smile bronislav, еще раз прошу прощения

Прошу прощения, за наезды!

Вот файл, который программа парсит:
Код



Настройка протокола IP для Windows





VMware Network Adapter VMnet8 - Ethernet адаптер:



        DNS-суффикс этого подключения . . : 

        IP-адрес  . . . . . . . . . . . . : 192.168.139.1

        Маска подсети . . . . . . . . . . : 255.255.255.0

        Основной шлюз . . . . . . . . . . : 



VMware Network Adapter VMnet1 - Ethernet адаптер:



        DNS-суффикс этого подключения . . : 

        IP-адрес  . . . . . . . . . . . . : 192.168.233.1

        Маска подсети . . . . . . . . . . : 255.255.255.0

        Основной шлюз . . . . . . . . . . : 



Подключение по локальной сети - Ethernet адаптер:



        DNS-суффикс этого подключения . . : ami.local

        IP-адрес  . . . . . . . . . . . . : 172.17.32.12

        Маска подсети . . . . . . . . . . : 255.255.255.0

        Основной шлюз . . . . . . . . . . : 172.17.32.10





Вот пример вывода программы:
Код

 
 
 
 
 
 
 
 192.168.139.1
 255.255.255.0
 255.255.255.0
 255.255.255.0
 255.255.255.0
 255.255.255.0
 255.255.255.0
 192.168.233.1
 255.255.255.0
 255.255.255.0
 255.255.255.0
 255.255.255.0
 255.255.255.0
 255.255.255.0
 172.17.32.12
 255.255.255.0
 172.17.32.10


Переводы строк специально не убирал

Автор: ginnie 22.8.2008, 16:40
Уважаемый bronislav, предлагаю

Код

open(IP_FILE,"ipconfig |");
while(<IP_FILE>) {
    print $1." ".$2."\n" if /IP.+?(\d+.\d+.\d+.\d+)/;
}
close(IP_FILE)

Автор: shamber 22.8.2008, 16:53
bronislav, я правильно понял, что вас интересует только
Подключение по локальной сети - Ethernet адаптер:

Автор: bronislav 22.8.2008, 17:23
Цитата(shamber @  22.8.2008,  15:53 Найти цитируемый пост)
bronislav, я правильно понял, что вас интересует только
Подключение по локальной сети - Ethernet адаптер: 

да вы правильно поняли, но там же может быть написано не только по русски (другая версия Win). поэтому исхожу из предположения, что на клиенте только один интерфейс.


Цитата(ginnie @  22.8.2008,  15:40 Найти цитируемый пост)
Уважаемый bronislav, предлагаю

спасибо - помогло

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)