#!/usr/bin/env python import re import pandas as pd # File paths ips_csv = './hostnames.csv' dhcp_data = '/srv/web/infra/ansible/roles/dhcp_server/files/dhcpd.conf.noc01.iad2.fedoraproject.org' # Read the CSV ips = pd.read_csv(ips_csv) # Read the DHCP config file into a list of lines with open(dhcp_data, 'r', encoding='utf-8') as f: dhcp_lines = f.readlines() def get_name(ip): # Search for the line containing the IP address for idx, line in enumerate(dhcp_lines): if ip in line: # Get the next line (like grep -A1) if idx + 1 < len(dhcp_lines): next_line = dhcp_lines[idx + 1] # Extract the hostname using the regex match = re.search(r'"(.*)\.mgmt', next_line) if match: return match.group(1) break return None # Return None if not found def get_stg(ip): # Search for the line containing the IP address for idx, line in enumerate(dhcp_lines): if ip in line: # Get the next line (like grep -A1) if idx + 1 < len(dhcp_lines): next_line = dhcp_lines[idx + 1] # Extract the hostname using the regex match = re.search(r'stg', next_line) if match: return True else: return False break return None # Return None if not found # Apply the function to each IP ips['name'] = ips['ip'].apply(get_name) ips['stg'] = ips['ip'].apply(get_stg) # Write the updated DataFrame back to CSV ips.to_csv('./hostnames.csv', index=False)