![]() |
Модераторы: ginnie, korob2001 |
![]() ![]() ![]() |
|
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
имеем список ip c масками:
нужно по принципу ipcalc проверить принадлежность данных ip к их подсети, и если да, то удалить данный ип. Вопрос заключается в реализации, т.к. не разобрался в коде ipcalc заранее благодарю за ответы. |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
Уважаемый ISQman, я, наверное, что-то не понимаю: как IP-адрес может не принадлежать подсети в Вашем условии, ведь подсеть определяется на основе этого IP-адреса?
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
в данном случае приходится сильно ухищряться, т.к. это взято из анонса, который делали ногами, как видно выше есть ипы такого плана:
195.114.128.0/19 195.114.128.0/24 в данном случае маска присваивается верхнему значению. так же и для всех его подсеток. путём листа и ручки а также для ускорения калькулятора в руках это вычислить не сложно, и будет видно, что: 195.114.128.0/19 195.114.128.0/24 195.114.129.0/24 195.114.130.0/24 195.114.131.0/24 195.114.132.0/24 195.114.133.0/24 195.114.135.0/24 будут все иметь маску /19 и естественно я их удалю руками (ipcalc вычисляет чётко)про действия могу сказать так: достаточно присвоить всем нижним подсеткам маску /19 и нетворк будет равен верхнему. При выполнении данного условия остаться должень только тот ип, который и является нетворком (195.114.128.0/19), ну и так по всему списку ![]() (ЗЫ описал тему как сам понял, может чтото упустил) Это сообщение отредактировал(а) ISQman - 29.7.2008, 11:58 |
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 9 Всего: 50 |
Удалить все подсетки, целиком входящие в другие подсетки?
|
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
Уважаемый amg, менять массив внутри цикла по нему разве хороший стиль?
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 9 Всего: 50 |
||||
|
||||
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
менять массивы и тд тут не выход из положения..
отбор осуществляться должен путём подобного сравнения Address: 195.114.128.0 11000011.01110010.100 00000.00000000 Netmask: 255.255.224.0 = 19 11111111.11111111.111 00000.00000000 Wildcard: 0.0.31.255 00000000.00000000.000 11111.11111111 => Network: 195.114.128.0/19 11000011.01110010.100 00000.00000000 Address: 195.114.129.0 11000011.01110010.1000 0001.00000000 Netmask: 255.255.240.0 = 20 11111111.11111111.1111 0000.00000000 Wildcard: 0.0.15.255 00000000.00000000.0000 1111.11111111 => Network: 195.114.128.0/20 11000011.01110010.1000 0000.00000000 Address: 195.114.129.0 11000011.01110010.100 00001.00000000 Netmask: 255.255.224.0 = 19 11111111.11111111.111 00000.00000000 Wildcard: 0.0.31.255 00000000.00000000.000 11111.11111111 => Network: 195.114.128.0/19 11000011.01110010.100 00000.00000000 в данном случае нетворком является один и тот же адрес. отсюда вопрос как данное сравнение организовать на perl? с учетом того, что при совпадении нетворков нижнее значение должно удаляться, также не факт что в списке будут присутствовать маски /20 и /19... |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
Уважаемый ISQman, напишите, что неверно делает вариант, предложенный amg?
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
я так понял что в вышеизложенном коде фрагмент
яавляется не совсем удобным т.к. считывание значений будут из файла или из массива и по истичению какогото времени эти значения будут меняться :( если я чтото пишу не так, будьте так добры поправьте... Это сообщение отредактировал(а) ISQman - 29.7.2008, 15:54 |
|||
|
||||
ISQman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
попробовал использовать данный
amg, скрипт, он либо выводи 1 ип, либо не фильрует вообще не пойму по какой причине... |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
Уважаемый ISQman, скрипт в студию.
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
меняться ничего не должно!
если я праивльно понял, то в подсетях мастка может быть левая? вот еще скрипт я где-то давно нашел, работает на BSD!
Это сообщение отредактировал(а) gcc - 29.7.2008, 18:38 |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
Уважаемый gcc, не подскажите, как может быть левой маска, указанная в виде /xx?
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
Уважаемый ginnie, ну эти маски беруться наверное с маршрутизаторов...?
и в списке сетей офицальном на моем провейдере админы вывесили подсети с неправильными масками ![]() или я не понял суть вопроса автора топика? ![]() Это сообщение отредактировал(а) gcc - 29.7.2008, 18:49 |
|||
|
||||
amg |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 9 Всего: 50 |
open F, 'file'; @IP = <F>; -- получить его из файла Я в растерянности... Если менять данные (массивы) нельзя (не выход из положения), то и делать ничего не нужно?
Покажите, пожалуйста, что должно получиться, например, из данных, приведенных в 1-м посте. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Perl: Системное программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |