import re # This script extracts ip, mac, and hostname from a dhcp server's log file to a csv file. # This works only if the log files match the format in the example log file in this directory def extract_info_from_logs(log_file_list, output_file_path): # Regular expression to match IP address, MAC address, and hostname regex = re.compile( r'\b(?:DHCPACK|DHCPREQUEST|DHCPOFFER)\b.*?on\s+([\d.]+)\s+to\s+([\da-f:]+)(?:\s+\((.*?)\))?' ) # A list of (ip, mac, host) data extracted from matched lines extracted_data = [] for logfile in log_file_list: with open(logfile, 'r') as logfile: for line in logfile: match = regex.search(line) if match: ip = match.group(1) mac = match.group(2) host = match.group(3) if match.group(3) else "Unknown" data = ip + "," + mac + "," + host # Customizable as per requirements if data not in extracted_data: # Ensure uniqueness # Add other conditions here as per requirements extracted_data.append(data) # Add extratcted data to the list # Write the extracted data to the output file with open(output_file_path, 'w') as output_file: output_file.write("IP,MAC,HOST\n") # Header row output_file.write('\n'.join(extracted_data)) # Data, as row+'\n' print(f"Extraction complete. Data written to {output_file_path}.") logfilelist = ['/var/log/syslog', '/var/log/syslog.1', '/var/log/dhcp.log'] # Specify the list of /path/log_file outputfile = 'output.csv' # Specify the output file /path/name.csv extract_info_from_logs(logfilelist, outputfile)