Я работаю над разработкой сценария Python, который будет выполнять присвоение имени хоста IP-адресу nslookup при предоставлении файла hosts.txt, который содержит список имен хостов в нашей сети. Конечная цель - получить файл «results.txt», который содержит IP-адреса по порядку и сокращенный до диапазона при наличии более одного последовательного адреса (например, 192.168.10.5, 192.168.10.6, 192.168.10.7 будет 192.168.10. 10.5-192.168.10.7) До сих пор мне удалось получить сценарий для выполнения nslookup и сортировки IP-адресов, но извлечение / создание диапазона оказывается трудным. Я надеюсь, что кто-то с большим опытом, чем мой собственный, сможет привести меня к правильному пути.
Текущий сценарий:
import sys
import socket
with open("host.txt") as f:
sys.stdout = open("results.txt", "w")
for line in map(str.rstrip, f):
if line: # skips empty lines
try:
ip_address=socket.gethostbyname(line)
print (ip_address)
except subprocess.CalledProcessError:
pass
sys.stdout.close()
with open("results.txt", "r") as infile:
iplist = sorted([i.strip() for i in infile.readlines()], key = lambda x: int(''.join((lambda a:lambda v:a(a,v))(lambda s,x: x if len(x) == 3 else s(s, '0'+x))(i) for i in x.split('.'))))
with open("results.txt", "w") as outfile:
outfile.write("\n".join(i for i in iplist))
Любые рекомендации или помощь будут очень благодарны.