Try it!
You may need to wait or refresh to let it load
Description
View the source code
import re
import requests
pattern = r'(?P<ip>\S+) - - \[(?P<date>\S+) (?P<time>\S+)\] "(?P<method>\S+) (?P<endpoint>\S+) (?P<protocol>\S+)" (?P<status>\d{3}) (?P<size>\d+)'
url = "https://pymite6941.is-a.dev/assets/test-data/server.log"
response = requests.get(url)
def check_pattern(key:str,value:str):
for line in response.text.splitlines():
match = re.search(pattern, line)
if match:
if match.group(key) == value:
print(line)
while True:
if response.status_code != 200:
print("Failed to retrieve log data")
break
print("What is the desired action?...")
choice = int(input("> "))
if choice == 1:
error_code = input("What error code are you looking for?\n> ")
check_pattern("status", error_code)
elif choice == 2:
ip_address = input("What IP address are you looking for?\n> ")
check_pattern("ip", ip_address)
elif choice == 3:
start_time = input("What is the start time? (format: dd/Mon/yyyy:HH:mm:ss)\n> ")
end_time = input("What is the end time? (format: dd/Mon/yyyy:HH:mm:ss)\n> ")
for line in response.text.splitlines():
match = re.search(pattern, line)
if match:
log_time = match.group("date") + " " + match.group("time")
if start_time <= log_time <= end_time:
print(line)
elif choice == 4:
method = input("What method are you looking for? (e.g. GET, POST)\n> ")
check_pattern("method", method)
elif choice == 5:
break
Previous Day
Next Day