55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
import urllib.request
|
|
import sys
|
|
|
|
# Be användaren om en adress
|
|
adress = input("Ange adress till loggfilen: ")
|
|
|
|
# Om adressen är kortare än ett tecken angav
|
|
# användaren ingen adress, så vi kör på default
|
|
if (len(adress) < 1):
|
|
adress = "http://jackbenny.se/logg.txt"
|
|
|
|
# Try-block för att testa om adressen finns och är giltig.
|
|
try:
|
|
# Vi börjar med att skapa ett objekt
|
|
url = urllib.request.urlopen(adress)
|
|
except ValueError:
|
|
sys.exit("Ogiltigt adressformat")
|
|
except urllib.error.URLError:
|
|
sys.exit("Fel eller okänd adress")
|
|
except urllib.error.HTTPError:
|
|
sys.exit("Fel adress, det finns inget där")
|
|
|
|
# Nu läser vi in loggfilen
|
|
loggfil = url.read()
|
|
|
|
# Därefter måste vi omkoda byte till en sträng för att
|
|
# t.ex. radbrytningar ska fungera korrekt
|
|
loggfilUtf = loggfil.decode("utf-8")
|
|
|
|
# Testa ifall det är loggfil och om inte, avsluta.
|
|
if "]:" not in loggfilUtf:
|
|
sys.exit("Det där verkar inte vara en loggfil")
|
|
|
|
# Dela upp strängen i enstaka rader istället
|
|
rader = loggfilUtf.splitlines()
|
|
|
|
raknare = 0 # Räknare till antalet försök
|
|
ipLista = list() # I denna sparar vi IP-adresser
|
|
for rad in rader:
|
|
if "Invalid user" not in rad: # INTE har söksträngen
|
|
continue # hoppas över.
|
|
raknare = raknare + 1 # Addera 1 till antalet försök
|
|
ord = rad.split() # Dela upp raden i enskilda ord
|
|
ip = ord[9] # Fält 9 är IP-adressen
|
|
if ip not in ipLista: # Om inte adressen redan finns,
|
|
ipLista.append(ip) # så lägg till den
|
|
|
|
# Skriv ut resultatet på skärmen
|
|
print("\nTotalt antal försök:", raknare)
|
|
print("\nLista över IP-adresser")
|
|
for adress in ipLista:
|
|
print(adress)
|
|
|