| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Системное программирование > привязка мак+ип под фрёй |
| Автор: ISQman 11.8.2008, 10:42 |
| Есть ли возможность организовать привязку мак-ип на перле? DHCP, VPN не интересует. Управляемых свитчей ес-но нету... |
| Автор: KSURi 11.8.2008, 12:45 |
| Не понял... Вы хотите сделать привязку на уровне перловых сокетов? |
| Автор: ISQman 11.8.2008, 15:47 |
| да, если это возможно... |
| Автор: ginnie 11.8.2008, 16:05 |
| Уважаемый ISQman, почему Вы решили использовать Perl для этой задачи? и почему Вы решили, что набор MAC + IP поможет Вам в сети, не имеющей управляемых коммутаторов? Второй вопрос не для обсуждения, просто наводящий на мысли. Добавлено через 8 минут и 17 секунд P.S. для привязки IP к MAC лично я использовал статическую ARP-таблицу на том компьютере, к которому (или через который) необходимо ограничить доступ. |
| Автор: ISQman 11.8.2008, 16:20 |
| это для элементарной защиты от детей, которые научились менять ипы, про замену маков в сети ещё не знают, хотелось бы в идеале связать мак+ип+нэйм в сети, но как реальзовать под фрё так и не понял, поэтому решил сделать сам. А почему на перл... наверное потомучто он мне понравилсо) |
| Автор: nitr 11.8.2008, 16:59 |
| ISQman, ipfw насколько я знаю вполне с этим справлялся... Посмотрите статьи на opennet.ru в разделе фряхи... Добавлено через 52 секунды Имхо: это хорошо, что понравился Perl, но всё же он для этого менее предназначен, чем "стандартные/проверенные" тулзы... |
| Автор: ISQman 11.8.2008, 17:30 |
| спс, посмотрим обязательно)) |
| Автор: ISQman 13.8.2008, 12:32 | ||||
| есть ещё вопросег(не хотел новую тему создавать) у меня скиптег собирает ипы и маки, всё по красоте итд... тока вот вопрос как можно выделить из такого вида списка:
одинаковые ипы в отдельный файл; в данном случае выход должен быть:
и как к этому безобразию можно приписать время, чтобы выход был "ип мак дата(dd.mm.yy h:min:sec)? |
| Автор: ginnie 13.8.2008, 12:54 | ||
| Уважаемый ISQman, можно создать хэш, ключами которого будут IP, а значениями массивы MAC-адресов. После обработки списка нужно выбрать (с помощью цикла по всем элементам) из хэша элементы, у которых размер массива больше 1 и записать их в файл. Не понял в чем проблема с приписыванием времени?
|
| Автор: ISQman 19.8.2008, 17:05 |
| но если буду одинаковые ипы... они ж как ключи просто удалятся. темболее на одном маке могут быть 2 ипа, а на одном ипе не могут быть 2 мака. или может я чтото не понял... |
| Автор: ginnie 19.8.2008, 18:54 | ||
Уважаемый ISQman, Вы абсолютно правы, я неверно написал: ключами хеша надо сделать MAC-адреса. Значением будет массив IP-адресов.
вот это высказывание я не понял! Добавлено через 2 минуты и 55 секунд Предложенный мной вариант ничего не выведет в файл для случаев, когда пользователи будут менять свой IP на любой незанятый, поэтому он неправильный. |
| Автор: ISQman 20.8.2008, 09:38 | ||
просто поробовал через цикл вывести значения хэша
но тут столкнулся с проблемой: одинаковый адреса (ip) удаляются, т.к. в хэшах не могут использоваться одинаковые ключи. а брать в качестве ключей маки тоже не выход из положения, т.к. на одном маке могут использоваться 2 ипа. |
| Автор: ginnie 20.8.2008, 11:19 | ||||
Уважаемый ISQman, значением в хеше должен быть не IP адрес, а массив IP.
для вывода используем
|
| Автор: ISQman 20.8.2008, 18:11 |
| ок, а в таком случае как мне быть если все ипы и маки находятся в одном массиве в виде: 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 20.8.2008, 18:16 | ||
| 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-адресами в виде строк с пробельным разделителем |
| Автор: ISQman 21.8.2008, 09:30 |
| дело в том что я запутался с хэшами, пробовал использовать полностью строку с пробельными знаками в качестве массива, но тут я не понял как мне вывести одинаковые ипы.. пробовал использовать в качестве ключей ипы: но тут если ипы повторяются (а ключи как известно не могут бывть одинаковые) они удаляются... пробовал использовать в качестве ключей маки... но тут же проявилась ещё одна проблема: есть юзвери, у которых 2 ипа причём по договору О_о) т.е. корректно выбрать нужные значения просто не могу... поэтому я и настолько запуталсо |
| Автор: ginnie 21.8.2008, 11:34 |
| Уважаемый ISQman, не могли бы Вы еще раз сформулировать, что Вам нужно и что не получается сделать? |
| Автор: ISQman 21.8.2008, 12:12 |
| нужно из данного выше списка, который храниться в файле выделить те пары ип-мак, в которых повторяются ипы |
| Автор: ginnie 21.8.2008, 12:17 |
| Тогда попробуйте предложенный вариант с хешем, только ключами сделайте IP-адреса. |
| Автор: ISQman 21.8.2008, 17:11 |
| деживёж? пива хачу с тобой попить |
| Автор: nitr 21.8.2008, 20:15 |
| ISQman, |
| Автор: ISQman 22.8.2008, 09:26 |
| Одесса.... |
| Автор: nitr 22.8.2008, 09:58 |
| ISQman, у него указано Москва! Вы тоже можете указать город в профиле. |
| Автор: ISQman 28.8.2008, 18:26 | ||||||
| по теме: удаляю повторяющиеся строки "ип мак дата время" при помощи
Подскажите где я мог допустить ошибку. а также какие в данном случае использовать модули? PS было:
надо:
|
| Автор: ginnie 28.8.2008, 18:36 | ||
Уважаемый ISQman, попробуйте
только строки будут отсортированы случайным образом. |
| Автор: ISQman 29.8.2008, 09:44 |
| сортировка не проблема, данный способ всё равно не даёт нужного результата, при изменении времени строки всё равно добавляются...(( my @log = keys %{{map{$_ => 1}@log}}; такой вид я тоже пробовал, он эквивалентен способу ginnie и так же проблема остаётся PS может ли данная проблема выявляться из-за чтения данных из файла и как это лучше организовать? |
| Автор: ginnie 29.8.2008, 09:58 | ||
Уважаемый ISQman, очередной вариант
|
| Автор: ISQman 29.8.2008, 10:58 |
| Ваш второй способ мне помог, спасибо. ещё вопрос где можно найти толковую литературу по хешам, желательно на приятном глазам языке (русском) заранее спасибо |
| Автор: ginnie 29.8.2008, 11:03 |
| ISQman, очень рекомендую http://www.books.ru/shop/books/595871 (магазин продает PDF, в интернете можно найти DJVU). |
| Автор: ISQman 9.9.2008, 17:11 |
| Ещё вопросик по теме: необходимо при сравнении 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 |
| Автор: ginnie 9.9.2008, 17:23 | ||
Уважаемый ISQman, у Вас есть собственные мысли о том, как можно удалить совпадения? Поделитесь ими, а то давать готовые решения как-то скучно!
|
| Автор: gcc 9.9.2008, 17:38 |
| Поиск элементов одного массива, отсутствующих в другом массиве не много тут http://npksv.ru/soft/perl/glava42.php |
| Автор: gcc 9.9.2008, 18:44 | ||
штатный вариант
|
| Автор: ISQman 12.9.2008, 19:59 | ||
| спасибо книга оч помогла, решение вот какое:
с ипами |
| Автор: ginnie 15.9.2008, 11:59 | ||
Уважаемый ISQman, в строке
форсировать скалярный контекст не нужно, т.к. $m - скаляр |
| Автор: lumen 28.10.2008, 10:29 | ||
| Может быть немного не по теме но что-то близкое. Мне нужно получить с управляемых свичей (10 портовые) связку mac+port Есть скрипт на http://xgu.ru/downloads/mac2port
Скрипт как раз то что нужно, но в перле не силен и поэтому возникло пару вопросов. Он мне вываливает все порты и маки, а вот допустим мне надо получить связу mac+port кроме 9 и 10 порта. Подскажите что поправить? |
| Автор: ginnie 28.10.2008, 12:27 | ||||||||||
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, тогда будут конкретные варианты кода. |
| Автор: lumen 28.10.2008, 14:48 | ||
| Прежде всего спасибо за то что откликнулись. Самое главное я не пойму как скрипт сопоставляет эти oid ы. Вывод команды
Прикрепил в файле. |
| Автор: ginnie 28.10.2008, 16:34 | ||
lumen, я неверно дал команду для портов. Должно быть
скрипт работает следующим образом: сначала получает MAC-адреса и сохраняет их в хэше, где ключами выступают окончания OID'ов во втором цикле скрипт обрабатывает порты, на которых обнаружились MAC-адреса, данные сохраняются в хэш, где ключами также являются окончания OID'ов. В конце скрипт для каждого окончания OID'а (это ключи хэша) выводит соответствие значений порта и MAC-адреса. В связи с этим предложенный в предыдущем моем сообщении алгоритм исключения портов неверен. Правильно будет во втором цикле проверять порт на исключение и удалять соответвующий ключ в хэше %mac_table примерно так if ($port == 9 or $port == 10) { delete $mac_table{$oid}; next; } |
| Автор: lumen 29.10.2008, 08:24 |
| Спасибо большое, помогло |
| Автор: ISQman 20.11.2008, 10:54 |
| Спасибо всем за помощь, "привязка" была сделана для логирования людей, которые любят поменять себе ип либо мак. Добавил конект в мускул, связал с ipfw для бана подменщиков, вебом для управлением из вне, а также на некоторые виды вирусов. В следствии провайдер стал жить нормальной жизнью. Также прощу извенения что не появлялся и вовремя не отвечал на личные сообщения (просто жену себе завёл |
| Автор: shamber 20.11.2008, 11:04 |
| ISQman, с женой поздравляю |