LOG Parsing

Write a program that takes filename as input(apache logfile), depending on the command line arguments(-u or -t) writes to a file:
A. The list of all unique clients in the logfile to a text file (-u)
B. The list of all the unique clients to a text file sorted by number of requests they made. (-t)


Find all the unique clients -u


Given, an apache logfile and command line option -u Find all the unique clients in the file and write the list of these clients to a file.

Example:

$ python logparser.py -u access.log    #Should write all the unique clients to a file
[*] created unique_clients.txt

$ ./cat.py unique_clients.txt   #Using our previous cat program to extract contents
unique_clients_get.txt
----------------------
10.54.89.11     
179.5.66.24     
iktel.cabel.net 
mxt.dsl.net     

Hints:

  • Understand the apache log entries pattern and use regex to extract clients addresses(There are IPs and hostnames, choose your regex to include both)
  • set is a data structure that contains only unique elements.

Sort clients by number of requests -t

If the user provides a command line option -t count the number of requests each unique client has made and sort them by number they made and write the sorted data to a file.

$ python logparser.py -t access.log #Should write all the unique clients, number of requests they made(sorted by requests) to a file
[*] created clients_requests.txt

$ ./cat.py clients_requests.txt     #Using our previous cat program to extract contents
10.54.89.11     made 652   requests
179.5.66.24     made 489   requests
mxt.dsl.net     made 168   requests
iktel.cabel.net made 52    requests