С Новым годом! Форум программистов, компьютерный форум, киберфорум
Lua
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 11.07.2015
Сообщений: 40
1

Входит ли IP в подсеть

05.06.2019, 13:32. Показов 2286. Ответов 6

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Нужна функция, которая определяет входит ли ip в подсеть из таблицы. Наброски:
Lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
local cidrs=
    { 
    "1"=
        { 
        cidr= "10.1.1.0", 
        mask="24", 
        name="private1_24"
        }, 
    "2" =
        { 
        cidr= "10.1.2.0", 
        mask="24", 
        name="private2_24"
        },
    "3" =
        { 
        cidr= "10.1.3.0", 
        mask="24", 
        name="private3_24"
        }
    }
    
local function matchCIDRIP(ip,mask)
    if ip and mask then
        local obj
        for i = 1,#cidrs do 
            obj=cidrs[i]
            if ip...
Добавлено через 2 часа 1 минуту
Навоял пока думал)
Lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
local obj
local oct1 octt = {},{}
local count
function string.split(str, sep)
   local result = {}
   local regex = ("([^%s]+)"):format(sep)
   for each in str:gmatch(regex) do
      table.insert(result, each)
   end
   return result
end
 
local cidrs= { 
    [1]=
        { 
        cidr= "10.1.1.0", 
        mask="24", 
        name="private1_24"
        }, 
    [2] =
        { 
        cidr= "10.1.2.0", 
        mask="24", 
        name="private2_24"
        },
    [3] =
        { 
        cidr= "10.1.3.0", 
        mask="24", 
        name="private3_24"
        }
    }
    
local function matchCIDRIP(ip, mask)
    if ip then
        if not mask then
            mask = "24"
        end
        local msg = ip.." not in cidr range"
        local ip = tostring(ip)
        local mask = tostring(mask)
        oct = string.split(ip,".")
        if #oct > 0 then
            for i = 1,#cidrs do 
                local isin = true
                obj=cidrs[i]
 --               print (mask.." and "..obj.mask)
                if mask == obj.mask then
                    if mask == "24" then 
                        count = 3
                    elseif mask == "16" then 
                        count = 2
                    elseif mask == "8" then 
                        count = 1
                    end 
                    octt = string.split(obj.cidr,".")
                    for i = 1, count do
                        if isin then
                            print (oct[i].." and "..octt[i])
                            if oct[i] ~= octt[i] then
                                isin = false
                            end
                        end
                    end
                end
                if isin then
                    msg = ip.. " is in "..obj.cidr
                    print(msg)
                    return true  
                end
            end
        end
        print(msg)
    end
    return false
end
 
matchCIDRIP("10.1.4.111")
Может есть более оптимизированный вариант?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.06.2019, 13:32
Ответы с готовыми решениями:

Дано целое число n Входит ли цифра 3 в его запись, если входит, то сколько раз
Дано целое число N. Входит ли цифра 3 в его запись, если входит, то сколько раз. Вывести результат....

Дано целое число N .Входит ли цифра 3 в его запись, если входит, то сколько раз
Дано целое число N.Входит ли цифра 3 в его запись если входит , то сколько раз?

Написать рекурсивную функцию, проверяющую, входит или не входит элемент Е в не пустой список L, состоящий из вещественных чисел
Помогите решить задачу, очень нужно Написать программу в которой объявить рекурсивную функцию,...

винда семерка не входит в систему,пишет подождите пожалуйста и после мигает,а в безопасный режим входит нормально
у меня схожая проблема,помогите пожалуйста,тоже не входит ,говорит подождите пожалуйста ,это все...

6
1017 / 1905 / 178
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
07.06.2019, 13:18 2
НавАял.
Маска задается несколько иначе.
Код, простите, плох, его не оптимизировать, а переписать следует.

Поставьте задачу более четко, правильно ли я понял, что вам нужно определить, принадлежит ли заданный айпи определенной подсети?
0
0 / 0 / 0
Регистрация: 11.07.2015
Сообщений: 40
08.06.2019, 21:57  [ТС] 3
vantfiles, все верно, есть список подсетей и нужно понять, входит ли искомый ip в одну из них (формирование белого/черного листа)
0
1017 / 1905 / 178
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
09.06.2019, 12:55 4
Эмм... попробую с другой стороны... почему у вас маска задается какими-то магическими числами?
Для Ipv4 мне кажется более принято что-то типа такого - 255.255.254.0
0
0 / 0 / 0
Регистрация: 11.07.2015
Сообщений: 40
09.06.2019, 14:52  [ТС] 5
vantfiles, разве писать цифрами через / не проще или есть какие то различия?
0
1017 / 1905 / 178
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
09.06.2019, 16:52 6
Да в принципе особой разницы нет, дело привычки... Еще вопрос - вы какую версию Луа используете?
0
0 / 0 / 0
Регистрация: 11.07.2015
Сообщений: 40
10.06.2019, 16:31  [ТС] 7
/usr/local/bin/lua52 -v
Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio
0
10.06.2019, 16:31
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.06.2019, 16:31
Помогаю со студенческими работами здесь

Ip и подсеть
Добрый вечер , дорогие гуру centos подскажите пожалуйста как сделать есть 1)ip 46.4.28.** 2)и...

подсеть
У меня есть подключение к интернету по оптике. Провайдер дал IP-адрес, Маску подсети, Основной...

Сеть/Подсеть
Доброго часа уважаемые форумчане. Обрисую свой вопрос так: У нас на объекте стоит коммутатор с ip...

Samba и подсеть!
Хотим вынести бухгалтерию в другую под сеть (чтобы они могли ходить по шарам и локальным компам, а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru