hiller Опубликовано 9 августа, 2009 · Жалоба Потребовалась утилитка на Perl, которая бы могла брать с DES-3526/3028/3612 таблицу MAC-адресов сопоставлять ее с номерами портов и VLAN и в выводить все это в примерно таком виде: PORT MAC VID Попробовал сделать сам, поискал примеры, чет ничего не получается, может у кого есть примеры решения такой задачи? Помогите пожалуйста! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
terrible Опубликовано 9 августа, 2009 (изменено) · Жалоба забираем по SNMP? если так, то там выборка по VLAN ID идёт, отдаёт мак - порт а что не получается? вы сами что-то писали, на чём затык? Изменено 9 августа, 2009 пользователем terrible Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
a_andry Опубликовано 10 августа, 2009 · Жалоба Когда-то писал скрипт для выполнения кучи однотипных команд на куче DES-3526 через телнет. Переделать под себя не сложно будет. Если интересно - пишите куда скинуть. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
XeonVs Опубликовано 10 августа, 2009 · Жалоба вот кусочек кода: my ($session, $error) = Net::SNMP->session( -version => '2c', -timeout => 10, -retries => 3, -hostname => $ARGV[0], -community => 'public', -port => 161 ); if (!defined($session)) { printf("ERROR: %s.\n", $error); exit 1; } my $macTable =".1.3.6.1.2.1.17.7.1.2.2.1.2"; foreach my $oid (oid_lex_sort(keys(%{$session->var_bind_list}))) { if ($oid =~ /^$macTable\.[\d]+\.([\d]+)\.([\d]+)\.([\d]+)\.([\d]+)\.([\d]+)\.([\d]+)$/) { my $mac = join ':', map((sprintf '%.2x', $_), ($1, $2, $3, $4, $5, $6)); my $port = $session->var_bind_list->{$oid}; print "mac: $mac\tport: $port\n"; } } вроде корректно скопировал. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hiller Опубликовано 10 августа, 2009 (изменено) · Жалоба Когда-то писал скрипт для выполнения кучи однотипных команд на куче DES-3526 через телнет. Переделать под себя не сложно будет. Если интересно - пишите куда скинуть. Очень интересно! Даже не только для этой цели. Сейчас планирую прописывать QoS и прочие шаблонные радости на куче 3526 и 3028, было бы очень кстати! Можно на почту? hi11er@mail.ru Изменено 10 августа, 2009 пользователем hiller Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hiller Опубликовано 10 августа, 2009 · Жалоба забираем по SNMP?если так, то там выборка по VLAN ID идёт, отдаёт мак - порт а что не получается? вы сами что-то писали, на чём затык? Мешает плохое знакомство с Perl, да и с программированием вообше. Что по VID я знаю. Т.е. логика должна быть такой: сначала смотрим какие есть VLANы, потом ищем в них MACи. Я нашел несколько примеров скриптов для этих целей, но все они не учитывали специфику D-Link'a с VID. Отдавали MACи только дефолтного VLANa. Да и MACи печаталь вида 0x0004d79dc100. вот кусочек кода: foreach my $oid (oid_lex_sort(keys(%{$session->var_bind_list}))) { вроде корректно скопировал. Этот пример самый элегантный из тех, что мне доводилось видеть. Но не работает, ругается на процитированную выше строку "Can't use an undefined value as a HASH reference at ./getfdb5.pl line 21.". Запускаю с параметром - IP свича. :( Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
XeonVs Опубликовано 10 августа, 2009 (изменено) · Жалоба вот кусочек кода: foreach my $oid (oid_lex_sort(keys(%{$session->var_bind_list}))) { вроде корректно скопировал. Этот пример самый элегантный из тех, что мне доводилось видеть. Но не работает, ругается на процитированную выше строку "Can't use an undefined value as a HASH reference at ./getfdb5.pl line 21.". Запускаю с параметром - IP свича. :( эхххх никто и не обратил внимания ято запрос-то и не выполняется: пропустил я кусочек скрипта: my $macTable =".1.3.6.1.2.1.17.7.1.2.2.1.2"; $result = $session->get_table( -baseoid => $macTable, -maxrepetitions => 25 ); Net::SNMP подключен так: use Net::SNMP qw(:snmp); Изменено 10 августа, 2009 пользователем XeonVs Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
a_andry Опубликовано 10 августа, 2009 · Жалоба Можно на почту? hi11er@mail.ru отправил Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Giga-Byte Опубликовано 10 августа, 2009 · Жалоба можно telnet && expect - кому интересно Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Gunner Опубликовано 10 августа, 2009 · Жалоба интересно Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hiller Опубликовано 10 августа, 2009 · Жалоба Можно на почту? hi11er@mail.ru отправил Огромное спасибо! Какраз то что нужно! Many many THANX :) вот кусочек кода: foreach my $oid (oid_lex_sort(keys(%{$session->var_bind_list}))) { вроде корректно скопировал. Этот пример самый элегантный из тех, что мне доводилось видеть. Но не работает, ругается на процитированную выше строку "Can't use an undefined value as a HASH reference at ./getfdb5.pl line 21.". Запускаю с параметром - IP свича. :( эхххх никто и не обратил внимания ято запрос-то и не выполняется: пропустил я кусочек скрипта: my $macTable =".1.3.6.1.2.1.17.7.1.2.2.1.2"; $result = $session->get_table( -baseoid => $macTable, -maxrepetitions => 25 ); Net::SNMP подключен так: use Net::SNMP qw(:snmp); Теперь все работает! Огромное спасибо! Буду пытаться переработать, чтобы сначала брался список VLANов, а затем маки в каждом отдельном VLANе. Не уверен, что справлюсь, но надо попробовать. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hiller Опубликовано 10 августа, 2009 · Жалоба Получилось! foreach my $oid (oid_lex_sort(keys(%{$session->var_bind_list}))) { if ($oid =~ /^$macTable\.([\d]+)\.([\d]+)\.([\d]+)\.([\d]+)\.([\d]+)\.([\d]+)\.([\d]+)$/) { my $vlan = $1; my $mac = join ':', map((sprintf '%.2x', $_), ($2, $3, $4, $5, $6, $7)); my $port = $session->var_bind_list->{$oid}; print " mac: $mac\tport: $port\t vlan: $vlan\n"; } Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
XeonVs Опубликовано 10 августа, 2009 · Жалоба Ну и замечательно. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hiller Опубликовано 10 августа, 2009 · Жалоба Ну и замечательно. Огромнейшее спасибо! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
XeonVs Опубликовано 10 августа, 2009 · Жалоба Ну и замечательно. Огромнейшее спасибо! Нет проблем!Будут еще похожие вопросы по длинкам, могу подсказать. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hiller Опубликовано 11 августа, 2009 · Жалоба Хм... А интересно, Вам не приходилось решать задачу с автоматическим сохранением конфигов свичей в случае, если в них есть отличия? У меня пока есть две мысли на этот счет: 1. Хочу SNMP или Telnet пробегаться по свичам, говорить им залить конфигурацию на tftp. Потом директорию с конфигами commit'ить в какой нибудь репазитория, аля cvs, svn и т.п. 2. Забирать конфиг по телнету, сравнивать его с предыдущим, если файлы разные, переименовывать старый вариант в name_%d-%m-%y.cfg, отсылать diff админу и/или писать в базу. Второй вариант мне больше нравится т.к. более гибок и не использует svn. Буду пробывать реализовать, но велосипед изобретать совершенно не хочется :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
mikevlz Опубликовано 11 августа, 2009 · Жалоба тут рядом есть тема про программу NOC... Смотрите туда. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 11 августа, 2009 · Жалоба NOC'ом так же можно получить vlan'ы и mac-адреса со свича. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
HoatDog Опубликовано 11 августа, 2009 · Жалоба Хм... А интересно, Вам не приходилось решать задачу с автоматическим сохранением конфигов свичей в случае, если в них есть отличия? У меня пока есть две мысли на этот счет: 1. Хочу SNMP или Telnet пробегаться по свичам, говорить им залить конфигурацию на tftp. Потом директорию с конфигами commit'ить в какой нибудь репазитория, аля cvs, svn и т.п. 2. Забирать конфиг по телнету, сравнивать его с предыдущим, если файлы разные, переименовывать старый вариант в name_%d-%m-%y.cfg, отсылать diff админу и/или писать в базу. Второй вариант мне больше нравится т.к. более гибок и не использует svn. Буду пробывать реализовать, но велосипед изобретать совершенно не хочется :) пример решения задачиhttp://wiki.sirmax.noname.com.ua/index.php...k_config_backup Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hiller Опубликовано 11 августа, 2009 · Жалоба тут рядом есть тема про программу NOC... Смотрите туда. Да, я видел. У меня есть необходимость интегрирования обсуждаемых здесь функций в существующую систему, поэтому NOC не совсем подходит :( пример решения задачиhttp://wiki.sirmax.noname.com.ua/index.php...k_config_backup Хороший пример, перепишу его на perl и маленько модернизирую под свои задачи, если выйдет чтото толковое, здесь выложу результат. Спасибо! NOC'ом так же можно получить vlan'ы и mac-адреса со свича. Хм... Пойду смотреть, как это там реализовано, может чего нового подчерпну... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 11 августа, 2009 · Жалоба тут рядом есть тема про программу NOC... Смотрите туда. Да, я видел. У меня есть необходимость интегрирования обсуждаемых здесь функций в существующую систему, поэтому NOC не совсем подходит :( Все функции service activation можно дергать по XML-RPC. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hiller Опубликовано 11 августа, 2009 · Жалоба XML-RPC я представляю только в теории. На практике не приходилось сталкиваться, ну кроме платежных терминалов наверно. Спасибо за совет, обращу внимание... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dvolodin Опубликовано 11 августа, 2009 · Жалоба XML-RPC я представляю только в теории. На практике не приходилось сталкиваться, ну кроме платежных терминалов наверно. Спасибо за совет, обращу внимание...Там ничего даже в теории представлять не надо. На python оно выглядит в несколько строкhttp://trac.nocproject.org/trac/browser/sa/views.py#L32 (см. get_result) На Perl примерно так же Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
toropovsn Опубликовано 11 августа, 2009 · Жалоба Привет всем! А можно мне на почту тоже прогу на перле которая по telnet нужные вещи делает. Спасибо. toropovsn@ya.ru Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
a_andry Опубликовано 11 августа, 2009 · Жалоба отправил Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...