Я пытаюсь выполнить обратный поиск всех внутренних IP-адресов, чтобы проверить имеющуюся у меня инвентаризацию. Я хочу сделать это через Python. Я думаю о создании файла csv со всеми внутренними IP-адресами, используя следующий код:
import ipaddress as ip
import pandas as pd
file_name='10Dot.csv'
a = ip.ip_network('10.0.0.0/8')
ip_list = []
for x in a.hosts():
ip_list.append(x.compressed)
df=pd.DataFrame({'IP_Address':ip_list})
df.to_csv(file_name, encoding='utf-8', index=False)
end = time.time()
print(end - start)
Точно так же я хочу сгенерировать файлы для других внутренних сетей. Затем, используя следующую функцию, я пытаюсь просмотреть каждую строку в сгенерированном файле, чтобы выполнить обратный поиск:
def reverse_lookup(host):
try:
lookup=socket.gethostbyaddr(str(host))[0]
except:
lookup="NA"
return lookup
Если я читаю CSV-файл построчно, он очень медленно обрабатывает все IP-адреса. Я пытаюсь использовать многопоточность, чтобы выбирать фрагменты CSV-файла и выполнять указанную выше функцию построчно. Итак, с сетью 10.0.0.0/8 у меня есть 16 777 214 строк в файле, я думаю разделить это на 100 частей и создать окончательный файл с хостом и искомым значением. Как параллельно читать CSV-файл для потоков, а затем объединять их в один файл?
Также, если у вас есть лучший подход к решению этой проблемы, пожалуйста, дайте мне знать.
xargs -P10000 -n 1 dig <hosts.txt
) но с максом 256 было нормально, правда несколько медленно у всех по длительности задачи. - person tripleee   schedule 06.06.2018