From b77709c677f34682ef2fb0f3850d5f4a429f314b Mon Sep 17 00:00:00 2001 From: Chevallier Date: Wed, 23 Jul 2025 09:50:11 +0200 Subject: [PATCH] V0.1 --- src/scripts/extract_json.py | 45 +++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/src/scripts/extract_json.py b/src/scripts/extract_json.py index 37538b9..569e4d1 100644 --- a/src/scripts/extract_json.py +++ b/src/scripts/extract_json.py @@ -7,7 +7,7 @@ from datetime import datetime class InterfaceParser: """ - Parses 'display interface' command output to extract interface details. + Parse les données de la commande 'display interface' pour extraire les informations des interfaces. """ def parse(self, content: str) -> dict: interfaces = {} @@ -72,11 +72,11 @@ class InterfaceParser: class LinkAggregationParser: """ - Parses 'display link-aggregation verbose' command output. - Extracts link counts, MAC mappings, and bridge mappings. + Parse les données de la commande 'display link-aggregation verbose'. + Extrait les comptes de liens, les mappages MAC et les mappages de pont. """ def _convert_port_name(self, port_name: str) -> str: - """Converts the port name to a standardized format.""" + """Convertit le nom du port en un format standardisé.""" port_name = re.sub(r'\([A-Z]\)', '', port_name) patterns = [ (r'^XGE(\d+/\d+/\d+)$', r'Ten-GigabitEthernet\1'), @@ -175,11 +175,11 @@ class LinkAggregationParser: class ConfigurationParser: """ - Parses 'display current-configuration' command output. - Extracts interface configurations and general switch configurations. + Parse les données de la commande 'display current-configuration'. + Extrait les configurations des interfaces et les configurations générales du commutateur. """ def _parse_vlan_ranges(self, vlan_string: str) -> list: - """Parses a VLAN string and returns a list of unique VLANs.""" + """Parse un string de VLAN et renvoie une liste de VLANs uniques.""" vlans = set() parts = vlan_string.split() i = 0 @@ -370,7 +370,7 @@ class ConfigurationParser: class DeviceInfoParser: """ - Parses 'display device manuinfo' command output to extract MAC addresses. + Parse les données de la commande 'display device manuinfo' pour extraire les adresses MAC. """ def parse(self, content: str) -> list[str]: mac_addresses = [] @@ -394,8 +394,8 @@ class DeviceInfoParser: class LogFileProcessor: """ - Manages the parsing of a single log file, coordinating different parsers - and merging their results into a unified JSON structure. + Manage le parsing d'un fichier journal unique, en coordonnant différents analyseurs + et en fusionnant leurs résultats dans une structure JSON unifiée. """ def __init__(self): self.interface_parser = InterfaceParser() @@ -404,7 +404,7 @@ class LogFileProcessor: self.device_info_parser = DeviceInfoParser() def _extract_sections(self, file_content: str) -> dict: - """Extracts different sections from the log file content.""" + """Extrait les sections pertinentes du contenu du fichier journal en fonction des motifs définis.""" sections = {} current_section = None lines = file_content.splitlines() @@ -441,14 +441,14 @@ class LogFileProcessor: return sections def _extract_switch_name(self, content: str) -> str | None: - """Extracts the switch name from the log file content.""" + """Extrait le nom du commutateur à partir du contenu du fichier journal.""" sysname_match = re.search(r"(?m)^\s*sysname\s+(.+)$", content) if sysname_match: return sysname_match.group(1).strip() return None def _merge_configuration_into_interfaces(self, interfaces: dict, interfaces_config: dict): - """Merges configuration details into the parsed interface data.""" + """Merge les détails de configuration dans les données d'interface analysées.""" for interface_name, config in interfaces_config.items(): if interface_name in interfaces: interfaces[interface_name].update({ @@ -480,13 +480,13 @@ class LogFileProcessor: } def _merge_link_aggregation_counts(self, interfaces: dict, link_counts: dict): - """Merges link aggregation counts into the interface data.""" + """Merge le nombre de link aggregation dans les données d'interface.""" for interface_name, count in link_counts.items(): if interface_name in interfaces: interfaces[interface_name]["nb_liens"] = count def _merge_mac_mappings(self, interfaces: dict, mac_mappings: dict): - """Merges MAC address mappings into the interface data.""" + """Merge les mappages d'adresses MAC dans les données d'interface.""" for interface_name, mac_address in mac_mappings.items(): if interface_name in interfaces: interfaces[interface_name]["mac_destination"] = mac_address @@ -509,15 +509,15 @@ class LogFileProcessor: } def _merge_bridge_mappings(self, interfaces: dict, bridge_mappings: dict): - """Merges bridge aggregation mappings into existing interfaces.""" + """Merge les bridge agreggation dans les interfaces existantes.""" for interface_name, bridge_name in bridge_mappings.items(): if interface_name in interfaces: interfaces[interface_name]["bridge_name"] = bridge_name def process_file(self, filepath: str) -> dict | None: """ - Processes a single log file to extract and consolidate network device data. - Returns a dictionary containing metadata and parsed data, or None on error. + Gère le parsing d'un fichier journal unique pour extraire et consolider les données des appareils réseau. + Renvoie un dictionnaire contenant des métadonnées et des données analysées, ou None en cas d'erreur. """ try: with open(filepath, 'r', encoding='latin-1', errors='ignore') as f: @@ -580,7 +580,7 @@ class LogFileProcessor: class DataExporter: """ - Handles the export of processed data to a JSON file. + Gère l'export des données traitées vers un fichier JSON. """ def export(self, data: dict, output_filepath: str): try: @@ -596,7 +596,8 @@ class DataExporter: class MainApplication: """ - Main application class to orchestrate the log file processing. + Application principale pour coordonner le traitement des fichiers journaux, + l'export des données et la gestion des erreurs. """ def __init__(self): self.processor = LogFileProcessor() @@ -625,8 +626,8 @@ class MainApplication: def process_file_return_json(filepath: str) -> dict | None: """ - Standalone function to process a single file and return JSON object, - useful for external calls that don't need the full CLI application. + Fonction autonome pour traiter un fichier unique et renvoyer un objet JSON, + utile pour les appels externes. """ processor = LogFileProcessor() return processor.process_file(filepath)