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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> привязка мак+ип под фрёй, Как организовать? 
:(
    Опции темы
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.

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


 




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


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

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