Как получить IP-адрес и адрес маски подсети с помощью python

как мне получить свой IP-адрес и маску подсети с компьютера (Windows) с помощью python?

Здесь вы задаете 2 вопроса: 1. Как получить внутренний IP-адрес и маску подсети в Python. 2. Как преобразовать IP + маску подсети в IP/CIDR. Я считаю, что оба вопроса имеют хороший дубликат

DeepSpace 21.03.2019 21:46

Возможный дубликат Поиск локальных IP-адресов с помощью Python stdlib

jeanggi90 21.03.2019 21:50
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
5
2
898
1

Ответы 1

Для вашего второго вопроса вы можете сделать это:

def int_address(address):
    return list(map(int, address.split(".")))

def bit_len(mask):
    return "".join(bin(m)[2:] for m in mask).find('0')

def prefix(mask, ip):
    return ".".join(str(m & i) for m, i in zip(mask, ip))

def cidr(mask, ip):
    mask = int_address(mask)
    ip = int_address(ip)
    return prefix(mask, ip)+"/"+str(bit_len(mask))

print(cidr("255.255.255.0", "10.0.0.1"))

bit_len немного хакерский, я думаю, что можно найти лучшее решение.

Другие вопросы по теме