Ваш пример немного сбивает с толку. Что находится между "192.55.22.0" и "192.56.22.0"? Вы написали «перебирать все хосты сети с маской сети», но этот диапазон не является единой полной сетью.
В общем случае для перехода от одного ip к другому вы можете использовать:
def ip_atoi(ip):
return struct.unpack('!I', socket.inet_aton(ip))[0]
def ip_itoa(ip):
return socket.inet_ntoa(struct.pack('!I', ip))
current = ip_atoi('192.55.22.0')
end = ip_atoi('192.56.22.0')
for ip in xrange(current, end):
do_something_on(ip_itoa(ip))
Если у вас есть проблемы с быстрым выполнением сетевых операций на стольких хостах, посмотрите на Pool
в модуле multiprocessing
. Это может ускорить ваши операции, обрабатывая несколько хостов одновременно.