Проблема заключается в том, что я в основном хотел бы найти, есть ли свободные подсети между агрегированным адресом BGP (например: 10.76.32.0 255.255.240.0) и всеми сетевыми командами на тот же маршрутизатор (например, 10.76.32.0 255.255.255.0, 10.76.33.0 255.255.255.0)python - вычитание диапазонов от больших диапазонов
В приведенном выше примере 10.76.34.0 -> 10.76.47.255 будет бесплатным.
Я собираюсь решить эту проблему, преобразовывая IP-адреса и маски подсети в двоичные и вычитая этот путь.
Чтобы это было просто, я сохраню этот пример в десятичной форме, но это может оставить меня со следующей проблемой: допустим, у меня диапазон от 1 до 250, я вычитаю из этого меньший диапазон, который идет от 20 до 23 , Я хотел бы получить диапазон от 1 до 19 и от 24 до 250.
Использование команды range не дает мне ожидаемых результатов, и хотя я мог бы создать список с каждым элементом в диапазоне и вычитать другой список с подмножеством элементов, мне кажется, что неплохо было бы иметь списки с, возможно, десятками тысяч элементов.
Hunor
Пробовали ли вы IPAddress - Библиотека манипуляций IPv4/IPv6? У этого есть много интересных особенностей. https://docs.python.org/3/library/ipaddress.html –
Я согласен с Pancho, я бы использовал ip-адрес lib, поскольку я не вижу, чтобы ваша логика диапазона была очень надежной. Также как вы получаете '10.76.34.0 -> 10.79.47.255'? Последний адрес в '10.76.32.0/20' был бы' 10.76.47.254' –
@Panch Jay Я сделал, и я просто хотел сказать, что я не нашел ни одного из его методов, чтобы помочь с моей проблемой, но пошел проверять другой время, чтобы убедиться ... и я нашел 'address_exclude (network)', который делает то, что я пытался выполнить. Спасибо за Ваш ответ. К сожалению, я не думаю, что я могу отметить два ответа как правильно, а elethan ответил первым :( –