Форум сайта python.su
Решил все таки изобрести свой велосипед
def input_data():
input_ip = raw_input ('Enter range of ip (x.x.x.x-x.x.x.x): ')
return input_ip.split('-')
def range_maker(input_ip):
s_ip = input_ip[0]
e_ip = input_ip[1]
i = 0
while True:
try:
if s_ip.split('.')[i]<e_ip.split('.')[i]:
raz = int(e_ip.split('.')[i])-int(s_ip.split('.')[i])
break
except: break
i+=1
while raz>0:
ip_list = [str_s_ip[:-1]+str(el) for el in range(1,254)]
otc = int(s_ip.split('.')[i])+1 #Тут получаем новое значение i-ого октета n+1 тут это 11
#как тут сформировать новое значение s_ip = '10.10.11.0' стркового типа?
raz-=1
Отредактировано (Окт. 25, 2010 11:29:22)
Офлайн
гхм… какой сложный код. Я его не понял. Если я правильно понял вашу задачу, то вот:
def input_data():
input_ip = raw_input ('Enter range of ip (x.x.x.x-x.x.x.x): ')
return input_ip.split('-')
def ipgen(oct1,oct2,oct3,oct4):
for o1 in xrange(oct1[0],oct1[1]+1):
for o2 in xrange(oct2[0],oct2[1]+1):
for o3 in xrange(oct3[0],oct3[1]+1):
for o4 in xrange(oct4[0],oct4[1]+1):
yield '%s.%s.%s.%s' % (o1,o2,o3,o4)
def range_maker(ip1,ip2):
return ipgen( [ i for i in zip( ip1.split('.'), ip2.split('.') ) ] )
Отредактировано (Окт. 25, 2010 13:20:08)
Офлайн
а чем, просто интересно, мой вариант не нравится?
ip2int = lambda ip: reduce(lambda a,b: a*256+b, map(int, ip.split('.')), 0)
int2ip = lambda i: "%s.%s" % (int2ip(i/256), i%256) if i/256 else i%256
for ip in xrange(ip2int(startip),ip2int(endip)+1):
print int2ip(ip)
Офлайн
2 zheromo и Alex2ndr: Всем спасибо, буду пользовать ваши варианты, велосепидировать надоело =)
Офлайн