Если все, что вы пытаетесь сделать, это перечислить список активных IP-адресов в заданном диапазоне, почему бы не использовать то, что уже существует для этой цели?
Оформить заказ nmap:
sudo nmap -sn -n 10.11.1.0- -oG - | grep -i Host | cut -d" " -f2
Вышеприведенная команда:
- nmap: сканировать сеть
- -sn + -sP: пропустить сканирование портов
- более быстрое обнаружение хоста
- -n: пропустить обратное разрешение DNS
- более быстрое обнаружение хоста
- 10.11.1.-: перечислить более 10.11.1.0
- тире указывает на перечисление
- -oG -: преобразовать выходные данные для обработки данных
- grep -i Host: отфильтровать выходные данные, чтобы показать только перечисляемые значения
- удаляет верхний и нижний колонтитул вывода nmap
- cut -d "" -f2: разбить вывод на столбцы, разделенные пробелами, а затем отфильтровать, чтобы показать только второй столбец.
- показывает только ip-адреса
Пример вывода
sudo nmap -sn -n 10.11.1.0.- -oG - | grep Host | cut -d" " -f2
# 10.11.1.0.1
# 10.11.1.0.100
# 10.11.1.0.101
# 10.11.1.0.103
# 10.11.1.0.106
# 10.11.1.0.169
# 10.11.1.0.108
Nmap поддерживает сканирование диапазона сети текущих хостов, а также любыхдругой диапазон сети.
Если вам нужно выполнить это непосредственно из python, используйте модуль subprocess
. https://docs.python.org/2/library/subprocess.html
Подробнее о nmap:
https://linux.die.net/man/1/nmap