Я создал проект python, который сканирует диапазон ip (т. Е. X.y.z.0/24) и возвращает список сетевых хостов. Он сохраняет список онлайн-хостов для файлов только с помощью ip (т.е. ['192.168.0.1', '192.168.0.2', '192.168.0.8', ...]. У меня возникают проблемы с этим следующим шагом. Я хотел бы сравнить этот список онлайн-хостов с диапазоном IP, чтобы убедиться, что это компьютеры для устранения других устройств. У меня есть список резервирования DHCP для компьютеров, которые я могу использовать. Есть ли простой способ сделать это и обновить список onHosts?Сравнение списка IP-адресов в другой список IP-адресов или диапазон IP-адресов
0
A
ответ
0
Здесь предлагается решение, которое вы можете попробовать (это немного раздутой, но я буду редактировать его позже, надеюсь)
def get_range(str_num):
""" Converts string representation of number or range into (min,max) tuple """
try:
num = int(str_num)
return num, num
except ValueError:
min_, max_ = str_num.split('-')
return int(min_), int(max_)
def host_in_range(host, host_range):
""" Checks whether given host belongs to given range (both are range representation """
#print(*zip(host, host_range))
for (min_h, max_h), (min_r, max_r) in zip(host, host_range):
if (min_h < min_r) or (max_h > max_r): return False
return True
if __name__ == "__main__":
hosts_str = ['192.168.0.1', '192.168.0.10', '0.168.0.0', '192.168.1.10', '192.168.0.255']
hosts = [x.split('.') for x in hosts_str]
hosts = [[get_range(x) for x in elem] for elem in hosts]
host_ranges_str = ['0-255.168.0.0-254', '192.168.2-5.0-255']
host_ranges = [x.split('.') for x in host_ranges_str]
host_ranges = [[get_range(x) for x in elem] for elem in host_ranges]
for x in range(5):
print(hosts_str[x], "in range", host_ranges_str[0], host_in_range(hosts[x], host_ranges[0]))
+0
Спасибо за Информация. Позвольте мне попробовать это и посмотреть, что произойдет. Я наткнулся на простой способ конвертировать IP-строки в INT и обратно в модуль ipaddress. Это делает сравнение довольно простым статически, но программа, которую я создаю, является переменной на основе пользовательского ввода. int (ipaddress.IPv4Address ('192.168.0.1')) str (ipaddress.IPv4Address (3232235521)) – Ryan
Смежные вопросы
- 1. Добавить диапазон из одного списка в другой
- 2. Сравнение списка в список с круткой
- 3. Сохранение списка в другой список
- 4. Добавление списка в другой список?
- 5. Сортировка списка в другой список
- 6. Почему добавление списка в другой список, используя диапазон добавления, удаляет элементы из первого списка?
- 7. Обновление списка другой список (Linq)
- 8. Сравнение Ценовой диапазон в mysql
- 9. Запрос списка в другой список в C#
- 10. Перевод списка в другой список в прологе
- 11. Добавление списка в другой список Python добавляет
- 12. сравнение списка в Python
- 13. Список и диапазон Python
- 14. Свести список списка с помощью Linq или другой C# функции
- 15. HTML Скопировать из списка в другой список?
- 16. Переместить элемент списка в другой список?
- 17. Скопируйте все элемент списка в другой список
- 18. переформатирование списка списков в другой список списков
- 19. Копирование списка массива в другой список массива
- 20. Groovy: Добавьте элемент списка в другой список
- 21. Переместить элемент списка в другой список
- 22. Добавление элемента списка в другой список
- 23. Добавить элемент списка в другой список
- 24. Проверить количество одного списка в другой список
- 25. Данные из списка в другой список
- 26. Как добавить элементы списка в другой список?
- 27. Копирование Части списка в другой список
- 28. Перечислить список в другой список
- 29. Получить диапазон списка
- 30. Сравнение элементов списка массивов
преобразования IP-адресов в Интс, конвертировать IPRange в Bitmask, увидеть, если ф находится в пределах этой битовой маски. –
Любые примеры были бы полезными и полезными. – Ryan