Модераторы: ginnie, korob2001

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> привязка мак+ип под фрёй, Как организовать? 
:(
    Опции темы
ISQman
Дата 11.8.2008, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 22.7.2008

Репутация: нет
Всего: нет



Есть ли возможность организовать привязку мак-ип на перле? DHCP, VPN не интересует. Управляемых свитчей ес-но нету...
PM MAIL ICQ   Вверх
KSURi
Дата 11.8.2008, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 5
Всего: 27



Не понял... Вы хотите сделать привязку на уровне перловых сокетов?


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
ISQman
Дата 11.8.2008, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 22.7.2008

Репутация: нет
Всего: нет



да, если это возможно...
PM MAIL ICQ   Вверх
ginnie
Дата 11.8.2008, 16:05 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 6
Всего: 49



Уважаемый ISQman, почему Вы решили использовать Perl для этой задачи? и почему Вы решили, что набор MAC + IP поможет Вам в сети, не имеющей управляемых коммутаторов? Второй вопрос не для обсуждения, просто наводящий на мысли.

Добавлено через 8 минут и 17 секунд
smile
P.S.  для привязки IP к MAC лично я использовал статическую ARP-таблицу на том компьютере, к которому (или через который) необходимо ограничить доступ.


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
ISQman
Дата 11.8.2008, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 22.7.2008

Репутация: нет
Всего: нет



это для элементарной защиты от детей, которые научились менять ипы, про замену маков в сети ещё не знают, хотелось бы в идеале связать мак+ип+нэйм в сети, но как реальзовать под фрё так и не понял, поэтому решил сделать сам. А почему на перл... наверное потомучто он мне понравилсо)
PM MAIL ICQ   Вверх
nitr
Дата 11.8.2008, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 2
Всего: 84



ISQman, ipfw насколько я знаю вполне с этим справлялся...
Посмотрите статьи на opennet.ru в разделе фряхи...

Добавлено через 52 секунды
Имхо: это хорошо, что понравился Perl, но всё же он для этого менее предназначен, чем "стандартные/проверенные" тулзы...



--------------------
PM   Вверх
ISQman
Дата 11.8.2008, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 22.7.2008

Репутация: нет
Всего: нет



спс, посмотрим обязательно))
PM MAIL ICQ   Вверх
ISQman
Дата 13.8.2008, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 22.7.2008

Репутация: нет
Всего: нет



есть ещё вопросег(не хотел новую тему создавать)
у меня скиптег собирает ипы и маки, всё по красоте итд...
тока вот вопрос как можно выделить из такого вида списка:
Код

91.202.108.129 00:07:e9:0b:22:fb
91.202.108.126 00:0c:29:50:42:6e
91.202.108.124 00:1e:8c:72:82:2e
91.202.108.115 00:0c:29:77:39:75
91.202.108.110 00:80:48:10:a6:2d
195.66.204.61 00:30:48:85:f6:95
194.107.117.7 00:30:48:8a:45:21
194.107.117.7 00:0b:bf:76:54:19
194.107.117.4 00:16:c7:97:fe:40
194.107.117.3 00:d0:02:8b:60:0a
194.107.117.21 00:1d:e5:db:34:1b
194.107.117.199 00:02:b3:d3:66:c3
194.107.117.19 00:1c:c0:3c:5b:70
194.107.117.17 00:30:48:33:a1:01
194.107.117.1 00:d0:58:26:43:c1
193.39.118.233 00:1c:0f:b3:54:1a

одинаковые ипы в отдельный файл; в данном случае выход должен быть:
Код

194.107.117.7 00:30:48:8a:45:21
194.107.117.7 00:0b:bf:76:54:19

и как к этому безобразию можно приписать время, чтобы выход был "ип мак дата(dd.mm.yy h:min:sec)?
PM MAIL ICQ   Вверх
ginnie
Дата 13.8.2008, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 6
Всего: 49



Уважаемый ISQman, можно создать хэш, ключами которого будут IP, а значениями массивы MAC-адресов. После обработки списка нужно выбрать (с помощью цикла по всем элементам) из хэша элементы, у которых размер массива больше 1 и записать их в файл.

Не понял в чем проблема с приписыванием времени?

Код

my @date = localtime();
$date[4]++;
$date[5] -= 100;
printf("%s %s %d-%02d-%02d %02d:%02d:%02d", $ip, $mac, @date[3,4,5,2,1,0]);



--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
ISQman
Дата 19.8.2008, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 22.7.2008

Репутация: нет
Всего: нет



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

PM MAIL ICQ   Вверх
ginnie
Дата 19.8.2008, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 6
Всего: 49



Уважаемый ISQman, Вы абсолютно правы, я неверно написал: ключами хеша надо сделать MAC-адреса. Значением будет массив IP-адресов.

Цитата

но если буду одинаковые ипы... они ж как ключи просто удалятся.


вот это высказывание я не понял!

Добавлено через 2 минуты и 55 секунд
Предложенный мной вариант ничего не выведет в файл для случаев, когда пользователи будут менять свой IP на любой незанятый, поэтому он неправильный.


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
ISQman
Дата 20.8.2008, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 22.7.2008

Репутация: нет
Всего: нет



просто поробовал через цикл вывести значения хэша
Код

while ( my ($key, $value) = each(%hash)){
    print "$key $value\n"
}

но тут столкнулся с проблемой: одинаковый адреса (ip) удаляются, т.к. в хэшах не могут использоваться одинаковые ключи. а брать в качестве ключей маки тоже не выход из положения, т.к. на одном маке могут использоваться 2 ипа.
PM MAIL ICQ   Вверх
ginnie
Дата 20.8.2008, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 6
Всего: 49



Уважаемый ISQman, значением в хеше должен быть не IP адрес, а массив IP.

Код

my %macs;
my ($ip, $mac) = split('\s+', $list_line);
push(@{$macs{$mac}}, $ip);



для вывода используем
Код

while ( my ($mac, $ips) = each(%macs) ) {
    if (@$ips > 1) {
        for my $ip (@$ips) {
            print "$mac $ip\n";
        }
    }
}



--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
ISQman
Дата 20.8.2008, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 22.7.2008

Репутация: нет
Всего: нет



ок, а в таком случае как мне быть если все ипы и маки находятся в одном массиве в виде:
91.202.108.142 00:07:e9:0a:ca:98
91.202.108.146 00:06:29:77:4b:4c
91.202.108.115 00:0c:29:77:39:75
91.202.108.124 00:1e:8c:72:82:2e
91.202.108.131 00:06:29:77:51:33
91.202.108.132 00:07:e9:0b:23:28
как мне применить вышеизложенное решение? 

ЗЫ сильно чтото я запутался(
PM MAIL ICQ   Вверх
ginnie
Дата 20.8.2008, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 6
Всего: 49



ISQman, правильно ли я понял, что первый элемент массива - '91.202.108.142 00:07:e9:0a:ca:98', второй - '91.202.108.146 00:06:29:77:4b:4c' и т.д.?

Если да, то

Код

my %macs;
for my $list_line (@list_lines) {
    my ($ip, $mac) = split('\s+', $list_line);
    push(@{$macs{$mac}}, $ip);
}

где @list_lines - массив с IP и MAC-адресами в виде строк с пробельным разделителем

Это сообщение отредактировал(а) ginnie - 20.8.2008, 19:51


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
ISQman
Дата 21.8.2008, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 22.7.2008

Репутация: нет
Всего: нет



дело в том что я запутался с хэшами, пробовал использовать полностью строку с пробельными знаками в качестве массива, но тут я не понял как мне вывести одинаковые ипы.. пробовал использовать в качестве ключей ипы: но тут если ипы повторяются (а ключи как известно не могут бывть одинаковые) они удаляются... пробовал использовать в качестве ключей маки... но тут же проявилась ещё одна проблема: есть юзвери, у которых 2 ипа причём по договору О_о) т.е. корректно выбрать нужные значения просто не могу... поэтому я и настолько запуталсо  smile 
PM MAIL ICQ   Вверх
ginnie
Дата 21.8.2008, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 6
Всего: 49



Уважаемый ISQman, не могли бы Вы еще раз сформулировать, что Вам нужно и что не получается сделать?


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
ISQman
Дата 21.8.2008, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 22.7.2008

Репутация: нет
Всего: нет



нужно из данного выше списка, который храниться в файле выделить те пары ип-мак, в которых повторяются ипы
PM MAIL ICQ   Вверх
ginnie
Дата 21.8.2008, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 6
Всего: 49



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


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
ISQman
Дата 21.8.2008, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 22.7.2008

Репутация: нет
Всего: нет



деживёж? пива хачу с тобой попить
PM MAIL ICQ   Вверх
nitr
Дата 21.8.2008, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 2
Всего: 84



 smile 
ISQmansmile в Москве, как указано ;) , хотя это как страна...


--------------------
PM   Вверх
ISQman
Дата 22.8.2008, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 22.7.2008

Репутация: нет
Всего: нет



 smile 
Одесса.... smile  smile 
PM MAIL ICQ   Вверх
nitr
Дата 22.8.2008, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 2
Всего: 84



 smile 
ISQman, у него указано Москва!
Вы тоже можете указать город в профиле.


--------------------
PM   Вверх
ISQman
Дата 28.8.2008, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 22.7.2008

Репутация: нет
Всего: нет



по теме:
удаляю повторяющиеся строки "ип мак дата время" при помощи 
Код

my @log = keys %{{map{$_}@log}};

Подскажите где я мог допустить ошибку. а также какие в данном случае использовать модули?

PS было:
Код

195.66.204.117 00:30:48:85:f6:95 at 28.08.08 18:25:54
195.66.204.61 00:30:48:85:f6:95 at 28.08.08 18:25:54
195.66.204.117 00:30:48:85:f6:95 at 28.08.08 18:25:55
195.66.204.61 00:30:48:85:f6:95 at 28.08.08 18:25:55
195.66.204.117 00:30:48:85:f6:95 at 28.08.08 18:25:55
195.66.204.61 00:30:48:85:f6:95 at 28.08.08 18:25:55
195.66.204.117 00:30:48:85:f6:95 at 28.08.08 18:25:56
195.66.204.61 00:30:48:85:f6:95 at 28.08.08 18:25:56

надо:
Код

195.66.204.117 00:30:48:85:f6:95 at 28.08.08 18:25:54
195.66.204.61 00:30:48:85:f6:95 at 28.08.08 18:25:54

PM MAIL ICQ   Вверх
ginnie
Дата 28.8.2008, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 6
Всего: 49



Уважаемый ISQman, попробуйте

Код

my %hash = map {$_ => 1} @log;
@log = keys %hash;


только строки будут отсортированы случайным образом.


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
ISQman
Дата 29.8.2008, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 22.7.2008

Репутация: нет
Всего: нет



сортировка не проблема, данный способ всё равно не даёт нужного результата, при изменении времени строки всё равно добавляются...((

my @log = keys %{{map{$_ => 1}@log}}; такой вид я тоже пробовал, он эквивалентен способу  ginnie

и так же проблема остаётся


PS может ли данная проблема выявляться из-за чтения данных из файла и как это лучше организовать?

Это сообщение отредактировал(а) ISQman - 29.8.2008, 10:55
PM MAIL ICQ   Вверх
ginnie
Дата 29.8.2008, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 6
Всего: 49



Уважаемый ISQman, очередной вариант  smile 

Код

my %hash = map {/^(.+)\sat\s.+$/; $1 => $_} reverse @logs;
@logs = values %hash;



--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
ISQman
Дата 29.8.2008, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 22.7.2008

Репутация: нет
Всего: нет



Ваш второй способ мне помог, спасибо.
ещё вопрос где можно найти  толковую литературу по хешам, желательно на приятном глазам языке (русском)


заранее спасибо

Это сообщение отредактировал(а) ISQman - 29.8.2008, 10:58
PM MAIL ICQ   Вверх
ginnie
Дата 29.8.2008, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 6
Всего: 49



ISQman, очень рекомендую Программирование на Perl, 3-е издание (магазин продает PDF, в интернете можно найти DJVU).


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
ISQman
Дата 9.9.2008, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 22.7.2008

Репутация: нет
Всего: нет



Ещё вопросик по теме:
необходимо при сравнении 2-х массивов вида:
первый элемент массива - '91.202.108.142 00:07:e9:0a:ca:98', второй - '91.202.108.146 00:06:29:77:4b:4c' и т.д.
удалить все совпадения. например:
было:
 @arr_1 =
194.107.117.19 00:1c:c0:3c:5b:70
194.107.117.19 00:1c:c0:3c:5b:70
194.107.117.17 00:30:48:33:a1:01
194.107.117.1 00:d0:58:26:43:c1
@arr_2 =
194.107.117.19 00:1c:c0:3c:5b:70
194.107.117.17 00:30:48:33:a1:01
194.107.117.1 00:d0:58:26:43:c1
91.202.108.131 00:06:29:77:51:33
91.202.108.132 00:07:e9:0b:23:28
стало:
@arr_3 =
91.202.108.131 00:06:29:77:51:33
91.202.108.132 00:07:e9:0b:23:28

либо так:
было:
@arr_1 =
194.107.117.19 00:1c:c0:3c:5b:70
194.107.117.19 00:1c:c0:3c:5b:70
194.107.117.19 00:1c:c0:3c:5b:70
194.107.117.17 00:30:48:33:a1:01
194.107.117.17 00:30:48:33:a1:01
194.107.117.1 00:d0:58:26:43:c1
194.107.117.1 00:d0:58:26:43:c1
91.202.108.131 00:06:29:77:51:33
91.202.108.132 00:07:e9:0b:23:28
стало:
@clear =
91.202.108.131 00:06:29:77:51:33
91.202.108.132 00:07:e9:0b:23:28

Это сообщение отредактировал(а) ISQman - 9.9.2008, 17:40
PM MAIL ICQ   Вверх
ginnie
Дата 9.9.2008, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 6
Всего: 49



Уважаемый ISQman, у Вас есть собственные мысли о том, как можно удалить совпадения? Поделитесь ими, а то давать готовые решения как-то скучно!

Цитата

Проще дать человеку удочку и научить ловить рыбу, чем каждый день ловить рыбу самому и кормить этого человека!


Это сообщение отредактировал(а) ginnie - 9.9.2008, 17:24


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
gcc
Дата 9.9.2008, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



Поиск элементов одного массива, отсутствующих в другом массиве


не много тут http://npksv.ru/soft/perl/glava42.php
PM WWW ICQ Skype GTalk Jabber   Вверх
gcc
Дата 9.9.2008, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



штатный вариант
Код

$fgrep -Ff file1 filenew
$fgrep -vFf file1 filenew


Это сообщение отредактировал(а) gcc - 9.9.2008, 18:51
PM WWW ICQ Skype GTalk Jabber   Вверх
ISQman
Дата 12.9.2008, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 22.7.2008

Репутация: нет
Всего: нет



спасибо
книга оч помогла, решение вот какое:
Код

my $i= 0;
@A = ip's,mac's;

%hash =  map{(split)[0,1]}@A;

@B = ip's,mac's;
$m = scalar @B;

while (delete $hash{$B[$i]},$i<$m){
    $i++;
}

print keys %arp_ip_mac,"\n";



с ипами
PM MAIL ICQ   Вверх
ginnie
Дата 15.9.2008, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 6
Всего: 49



Уважаемый ISQman, в строке

Код

$m = scalar @B;


форсировать скалярный контекст не нужно, т.к. $m - скаляр  smile 


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
lumen
Дата 28.10.2008, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 28.10.2008

Репутация: нет
Всего: нет



Может быть немного не по теме но что-то близкое.
Мне нужно получить с управляемых свичей (10 портовые) связку mac+port
Есть скрипт на http://xgu.ru/downloads/mac2port
Код
 
#!/usr/bin/perl

# Igor Chubin, 2007


our $community = "public";
our $switch = "192.168.15.100";

open(SNMP,"snmpwalk -On -OQ -v2c -c $community $switch .1.3.6.1.2.1.17.4.3.1.1|")
 or die "Can't run snmpwalk";
while (<SNMP>)
{
        chomp;
        [email protected]@@;
        my ($oid, $mac) = split /=\s*/;

        $_=$mac;
        s@"@@g; s@\s*$@@; s@ @:@g; s@(.)@\l\1@g; s@^0@@; s@:0@:@g;
        $mac_table{$_}=$oid;
}
close(SNMP);

open(SNMP,"snmpwalk -On -OQ -v2c -c $community $switch .1.3.6.1.2.1.17.4.3.1.2|")
 or die "Can't run snmpwalk";
while (<SNMP>)
{
        chomp;
        [email protected]@@;
        my ($oid, $port) = split /=/;
        $ports_table{$oid}=$port;
}                        
close(SNMP);


for $oid (keys %mac_table) {
        print "$oid -> ".$ports_table{$mac_table{$oid}}."\n"; 
}

Скрипт как раз то что нужно, но в перле не силен и поэтому возникло пару вопросов.
Он мне вываливает все порты и маки, а вот допустим мне надо получить связу mac+port кроме 9 и 10 порта.
Подскажите что поправить?

Это сообщение отредактировал(а) lumen - 28.10.2008, 10:30
PM MAIL   Вверх
ginnie
Дата 28.10.2008, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 6
Всего: 49



lumen, прежде всего надо поправить

Код

[email protected]@@;


на
Код

s/\Q.1.3.6.1.2.1.17.4.3.1.1//;

т.к. в первом варианте . (точка) - любой символ

Чтобы исключить порты 9 и 10 надо выяснить OID'ы (это такие идентификаторы типа .1.3.6.1.2.1.17.4.3.1.1) этих портов и не обрабатывать их в циклах. Выяснить OID'ы можно (мне так кажется) запустив в консоли

Код

snmpwalk -On -OQ -v2c -c public 192.168.15.100 .1.3.6.1.2.1.17.4.3.1.1


после определения OID'ов надо в циклы добавить после 

Код

my ($oid, $mac) = split /=\s*/;


строку

Код

next if ($oid =~ 'OID_9' or $oid =~ 'OID_10');


'OID_9' и 'OID_10' заменить на полученные значения.

P.S. т.к. общая часть OID'ов удаляется, 'OID_9' и 'OID_10' будут короткими значениями.

Если возникнут проблемы, выложите результат запуска snmpwalk, тогда будут конкретные варианты кода.

Это сообщение отредактировал(а) ginnie - 28.10.2008, 12:32


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
lumen
Дата 28.10.2008, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 28.10.2008

Репутация: нет
Всего: нет



Прежде всего спасибо за то что откликнулись.
Самое главное я не пойму как скрипт сопоставляет эти oid ы.
Вывод команды 
Код
snmpwalk -On -OQ -v2c -c public 192.168.15.100 .1.3.6.1.2.1.17.4.3.1.1

Прикрепил в файле.



Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  mac.rar 5,19 Kb
PM MAIL   Вверх
ginnie
Дата 28.10.2008, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 6
Всего: 49



lumen, я неверно дал команду для портов. Должно быть

Код

snmpwalk -On -OQ -v2c -c public 192.168.15.100 .1.3.6.1.2.1.17.4.3.1.2


скрипт работает следующим образом:

сначала получает MAC-адреса и сохраняет их в хэше, где ключами выступают окончания OID'ов
во втором цикле скрипт обрабатывает порты, на которых обнаружились MAC-адреса, данные сохраняются в хэш, где ключами также являются окончания OID'ов.

В конце скрипт для каждого окончания OID'а (это ключи хэша) выводит соответствие значений порта и MAC-адреса.

В связи с этим предложенный в предыдущем моем сообщении алгоритм исключения портов неверен. Правильно будет во втором цикле проверять порт на исключение и удалять соответвующий ключ в хэше %mac_table примерно так

if ($port == 9 or $port == 10) {
    delete $mac_table{$oid};
    next;
}

Это сообщение отредактировал(а) ginnie - 28.10.2008, 16:41


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
lumen
Дата 29.10.2008, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 28.10.2008

Репутация: нет
Всего: нет



Спасибо большое, помогло smile 

Это сообщение отредактировал(а) lumen - 29.10.2008, 08:24
PM MAIL   Вверх
ISQman
Дата 20.11.2008, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 22.7.2008

Репутация: нет
Всего: нет



 smile 
Спасибо всем за помощь, "привязка" была сделана для логирования людей, которые любят поменять себе ип либо мак. Добавил конект в мускул, связал с ipfw для бана подменщиков, вебом для управлением из вне, а также на некоторые виды вирусов. В следствии провайдер стал жить нормальной жизнью. Также прощу извенения что не появлялся и вовремя не отвечал на личные сообщения (просто жену себе завёл smile  smile ) теперь есть чем заниматься...

Это сообщение отредактировал(а) ISQman - 20.11.2008, 10:55
PM MAIL ICQ   Вверх
shamber
Дата 20.11.2008, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 1
Всего: 18



 smile 
ISQman, с женой поздравляю smile Добро пожаловать в ряды женатых smile


PM MAIL Jabber   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1578 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.