Недавно столкнулся с проблемой, необходимо было достать и логов довольно большое кол.во айпишек и прогнать отфильтровать их по стране.
Так как лень и автоматизация это порой рядом стоящие слова, то я сразу вспомнил, что существует Python и решил делать авто.
Код хоть и на костылях но прекрастно работает, если кто допилит более быстрый вариант буду очень благодарен, ибо в отсеве падает скорость из за хранения в переменной большого кол.ва данных, но привилегия в том, что нет ограничение на кол.во ип.
В общем как то так.
Регулярочка для поиска ип в файле:
И сам серчер для отсева :
Линг на либ : secynic/ipwhois
Вот как то так,если кому то действительно прегодится то ставте лукасы и будем думать дальше небольшие скриптосы.
Повторюсь , если кто то сделат более шустрым скрипт то буду благодарен!
Так как лень и автоматизация это порой рядом стоящие слова, то я сразу вспомнил, что существует Python и решил делать авто.
Код хоть и на костылях но прекрастно работает, если кто допилит более быстрый вариант буду очень благодарен, ибо в отсеве падает скорость из за хранения в переменной большого кол.ва данных, но привилегия в том, что нет ограничение на кол.во ип.
В общем как то так.
Регулярочка для поиска ип в файле:
Код:
# import re
# with open("C:/Users/Mason/Desktop/python/Python/Search/access_log-20180813","r") as file: #Путь к логу который должен находится в одном каталоге с скриптом
# text = file.read()
# Ips=re.findall(r'[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}',text)
# file_with_ip=open("C:/___/____/_____/access_log-2018-ip.txt","a") #Файл с результатом выполнения
# file_with_ip.write("\n".join(set(Ips)))
Код:
from ipwhois import IPWhois
#file_path="C:/___/____/____/result-error.txt"
file_path = input('Укажите имя файла :')
#ready_file_path="C:/___/____/____/result-ip-error.txt"
ready_file_path = input('Укажите финальный файл :' '')
with open(file_path,"r") as file:
file_text=file.read()
ready_file=open(ready_file_path, "a")
ip_obj= IPWhois
for ip,i in zip(file_text.split("\n"),range(len(file_text.split("\n")))):
try:
info = ip_obj(ip).lookup_whois()["nets"][0]
except:
continue
print('IP => %s \n %s / 100' % (ip, int((i*100)/len(file_text.split("\n")))))
print("Item %s: %s" % (i,int(len(file_text.split("\n")))))
if ip:
if info.get("country") == "UA": # Указываете страну
ready_file.write(str(
"\n\nIP ==> {ip} \nCity ==> {city} \nCountry ==> {country} \nRegion ==> {regionname} \nProvider ==> {ass} \nAddress ==> {address} \nIp range ==> {iprange} ").format(
ip=ip,
iprange=info["cidr"],
city=info["city"],
country=info["country"],
regionname=info["state"],
address=info["address"],
ass=info["name"],
))
Вот как то так,если кому то действительно прегодится то ставте лукасы и будем думать дальше небольшие скриптосы.
Повторюсь , если кто то сделат более шустрым скрипт то буду благодарен!