![]() |
Модераторы: ginnie, korob2001 |
![]() ![]() ![]() |
|
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
Есть ли возможность организовать привязку мак-ип на перле? DHCP, VPN не интересует. Управляемых свитчей ес-но нету...
|
|||
|
||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 5 Всего: 27 |
Не понял... Вы хотите сделать привязку на уровне перловых сокетов?
-------------------- Died at Life.pl line 21 |
|||
|
||||
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
да, если это возможно...
|
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
Уважаемый ISQman, почему Вы решили использовать Perl для этой задачи? и почему Вы решили, что набор MAC + IP поможет Вам в сети, не имеющей управляемых коммутаторов? Второй вопрос не для обсуждения, просто наводящий на мысли.
Добавлено через 8 минут и 17 секунд ![]() P.S. для привязки IP к MAC лично я использовал статическую ARP-таблицу на том компьютере, к которому (или через который) необходимо ограничить доступ. -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
это для элементарной защиты от детей, которые научились менять ипы, про замену маков в сети ещё не знают, хотелось бы в идеале связать мак+ип+нэйм в сети, но как реальзовать под фрё так и не понял, поэтому решил сделать сам. А почему на перл... наверное потомучто он мне понравилсо)
|
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 2 Всего: 84 |
ISQman, ipfw насколько я знаю вполне с этим справлялся...
Посмотрите статьи на opennet.ru в разделе фряхи... Добавлено через 52 секунды Имхо: это хорошо, что понравился Perl, но всё же он для этого менее предназначен, чем "стандартные/проверенные" тулзы... |
|||
|
||||
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
спс, посмотрим обязательно))
|
|||
|
||||
ISQman |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
есть ещё вопросег(не хотел новую тему создавать)
у меня скиптег собирает ипы и маки, всё по красоте итд... тока вот вопрос как можно выделить из такого вида списка:
одинаковые ипы в отдельный файл; в данном случае выход должен быть:
и как к этому безобразию можно приписать время, чтобы выход был "ип мак дата(dd.mm.yy h:min:sec)? |
||||
|
|||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
Уважаемый ISQman, можно создать хэш, ключами которого будут IP, а значениями массивы MAC-адресов. После обработки списка нужно выбрать (с помощью цикла по всем элементам) из хэша элементы, у которых размер массива больше 1 и записать их в файл.
Не понял в чем проблема с приписыванием времени?
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
но если буду одинаковые ипы... они ж как ключи просто удалятся.
темболее на одном маке могут быть 2 ипа, а на одном ипе не могут быть 2 мака. или может я чтото не понял... |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
Уважаемый ISQman, Вы абсолютно правы, я неверно написал: ключами хеша надо сделать MAC-адреса. Значением будет массив IP-адресов.
вот это высказывание я не понял! Добавлено через 2 минуты и 55 секунд Предложенный мной вариант ничего не выведет в файл для случаев, когда пользователи будут менять свой IP на любой незанятый, поэтому он неправильный. -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
просто поробовал через цикл вывести значения хэша
но тут столкнулся с проблемой: одинаковый адреса (ip) удаляются, т.к. в хэшах не могут использоваться одинаковые ключи. а брать в качестве ключей маки тоже не выход из положения, т.к. на одном маке могут использоваться 2 ипа. |
|||
|
||||
ginnie |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
Уважаемый ISQman, значением в хеше должен быть не IP адрес, а массив IP.
для вывода используем
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
||||
|
|||||
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 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 как мне применить вышеизложенное решение? ЗЫ сильно чтото я запутался( |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 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' и т.д.?
Если да, то
где @list_lines - массив с IP и MAC-адресами в виде строк с пробельным разделителем Это сообщение отредактировал(а) ginnie - 20.8.2008, 19:51 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
дело в том что я запутался с хэшами, пробовал использовать полностью строку с пробельными знаками в качестве массива, но тут я не понял как мне вывести одинаковые ипы.. пробовал использовать в качестве ключей ипы: но тут если ипы повторяются (а ключи как известно не могут бывть одинаковые) они удаляются... пробовал использовать в качестве ключей маки... но тут же проявилась ещё одна проблема: есть юзвери, у которых 2 ипа причём по договору О_о) т.е. корректно выбрать нужные значения просто не могу... поэтому я и настолько запуталсо
![]() |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
Уважаемый ISQman, не могли бы Вы еще раз сформулировать, что Вам нужно и что не получается сделать?
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
нужно из данного выше списка, который храниться в файле выделить те пары ип-мак, в которых повторяются ипы
|
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
Тогда попробуйте предложенный вариант с хешем, только ключами сделайте IP-адреса.
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
деживёж? пива хачу с тобой попить
|
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 2 Всего: 84 |
![]() ISQman, ![]() |
|||
|
||||
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
![]() Одесса.... ![]() ![]() |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 2 Всего: 84 |
![]() ISQman, у него указано Москва! Вы тоже можете указать город в профиле. |
|||
|
||||
ISQman |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
по теме:
удаляю повторяющиеся строки "ип мак дата время" при помощи
Подскажите где я мог допустить ошибку. а также какие в данном случае использовать модули? PS было:
надо:
|
||||||
|
|||||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
Уважаемый ISQman, попробуйте
только строки будут отсортированы случайным образом. -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
сортировка не проблема, данный способ всё равно не даёт нужного результата, при изменении времени строки всё равно добавляются...((
my @log = keys %{{map{$_ => 1}@log}}; такой вид я тоже пробовал, он эквивалентен способу ginnie и так же проблема остаётся PS может ли данная проблема выявляться из-за чтения данных из файла и как это лучше организовать? Это сообщение отредактировал(а) ISQman - 29.8.2008, 10:55 |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
Уважаемый ISQman, очередной вариант
![]()
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
Ваш второй способ мне помог, спасибо.
ещё вопрос где можно найти толковую литературу по хешам, желательно на приятном глазам языке (русском) заранее спасибо Это сообщение отредактировал(а) ISQman - 29.8.2008, 10:58 |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
ISQman, очень рекомендую Программирование на Perl, 3-е издание (магазин продает PDF, в интернете можно найти DJVU).
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
Уважаемый ISQman, у Вас есть собственные мысли о том, как можно удалить совпадения? Поделитесь ими, а то давать готовые решения как-то скучно!
Это сообщение отредактировал(а) ginnie - 9.9.2008, 17:24 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
Поиск элементов одного массива, отсутствующих в другом массиве
не много тут http://npksv.ru/soft/perl/glava42.php |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
штатный вариант
Это сообщение отредактировал(а) gcc - 9.9.2008, 18:51 |
|||
|
||||
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
спасибо
книга оч помогла, решение вот какое:
с ипами |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
Уважаемый ISQman, в строке
форсировать скалярный контекст не нужно, т.к. $m - скаляр ![]() -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
lumen |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 28.10.2008 Репутация: нет Всего: нет |
Может быть немного не по теме но что-то близкое.
Мне нужно получить с управляемых свичей (10 портовые) связку mac+port Есть скрипт на http://xgu.ru/downloads/mac2port
Скрипт как раз то что нужно, но в перле не силен и поэтому возникло пару вопросов. Он мне вываливает все порты и маки, а вот допустим мне надо получить связу mac+port кроме 9 и 10 порта. Подскажите что поправить? Это сообщение отредактировал(а) lumen - 28.10.2008, 10:30 |
|||
|
||||
ginnie |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
lumen, прежде всего надо поправить
на
т.к. в первом варианте . (точка) - любой символ Чтобы исключить порты 9 и 10 надо выяснить OID'ы (это такие идентификаторы типа .1.3.6.1.2.1.17.4.3.1.1) этих портов и не обрабатывать их в циклах. Выяснить OID'ы можно (мне так кажется) запустив в консоли
после определения OID'ов надо в циклы добавить после
строку
'OID_9' и 'OID_10' заменить на полученные значения. P.S. т.к. общая часть OID'ов удаляется, 'OID_9' и 'OID_10' будут короткими значениями. Если возникнут проблемы, выложите результат запуска snmpwalk, тогда будут конкретные варианты кода. Это сообщение отредактировал(а) ginnie - 28.10.2008, 12:32 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
||||||||||
|
|||||||||||
lumen |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 28.10.2008 Репутация: нет Всего: нет |
Прежде всего спасибо за то что откликнулись.
Самое главное я не пойму как скрипт сопоставляет эти oid ы. Вывод команды
Прикрепил в файле. Присоединённый файл ( Кол-во скачиваний: 3 ) ![]() |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
lumen, я неверно дал команду для портов. Должно быть
скрипт работает следующим образом: сначала получает 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 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
lumen |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 28.10.2008 Репутация: нет Всего: нет |
Спасибо большое, помогло
![]() Это сообщение отредактировал(а) lumen - 29.10.2008, 08:24 |
|||
|
||||
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
![]() Спасибо всем за помощь, "привязка" была сделана для логирования людей, которые любят поменять себе ип либо мак. Добавил конект в мускул, связал с ipfw для бана подменщиков, вебом для управлением из вне, а также на некоторые виды вирусов. В следствии провайдер стал жить нормальной жизнью. Также прощу извенения что не появлялся и вовремя не отвечал на личные сообщения (просто жену себе завёл ![]() ![]() Это сообщение отредактировал(а) ISQman - 20.11.2008, 10:55 |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 1 Всего: 18 |
![]() ISQman, с женой поздравляю ![]() ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl: Системное программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |