А я бы такую утилиту на генераторах строил. Что-то типа:
def find_files(pattern):
if pattern.startswith('10.'):
yield '.'.join(pattern.split('.')[:-1])
elif not '.' in pattern:
for fname in glob.glob('/etc/iptab/vlan%s.txt' % pattern):
for line in open(fname):
if 'vlanident' in line:
yield '.'.join(line.split()[5].split()[:-1])
def find_ip(host):
for fname in glob.glob('/etc/iptab/vlan*.txt'):
for line in open(fname):
if not '#' in line and host in line:
return True
return False
def find_free_ip(prefix):
for n in xrange(1, 253):
ip = '%s.%d' % (prefix, n)
if not find_ip(host):
yield ip
import sys
pattern = sys.argv[1]
count = int(sys.argv[2])
for ip in (x for x,i in enumerate(find_free_ip(find_files(pattern))) if i < count):
print ip, "[!IP_ADDRESS FREE!]"
Насколько я понял исходник автора, код естественно не тестировал :)