# Guide de Développement : Créer son propre outil Switch Ce guide explique comment étendre l'outil d'analyse réseau en ajoutant un nouveau outil pour les switches. > **Note :** Tout au long de ce guide, remplacez **`OUTIL`** (en majuscule ou minuscule) par le nom de l'outil que vous souhaitez développer'. --- ## Étape 1 : Création du script de l'outil Dans le dossier `Parseurs_logs_Switch/src/scripts/` (ou `script/` selon votre arborescence), créez un nouveau fichier Python nommé **`export_OUTIL.py`**. *Il est fortement recommandé de s'inspirer des parseurs existants comme `export_rapport_stack.py`, `export_rapport_interfaces.py`, `export_rapport_uplink.py` ou `export_schema_infra.py`.* Voici le squelette de code à utiliser : ```python def main(output_dir, output_file) """ Export switch data from JSON to Excel Args: json_file_path: Path to the JSON file to process output_file: Path to the output Excel file """ # Votre code ``` ## Étape 2 : Intégration dans le moteur principal (`main.py`) Pour que le script global prenne en charge le nouveau modèle, ouvrez le fichier `Parseurs_logs_Switch/src/main.py` : 1. Importez votre nouvelle fonction en haut du fichier : ```python from scripts.export_OUTIL import main as rapport_OUTIL ``` 2. Ajoutez la condition correspondante dans le bloc de sélection de l'outil : ```python if "-X" in sys.argv: print(f"\nGénération de OUTIL...") if "-o" in sys.argv: o_index = sys.argv.index("-o") if o_index + 1 < len(sys.argv): output_file_html = os.path.join(f"{output_path}OUTIL_{switch_type}_{sys.argv[o_index + 1]}.html") else: print("Erreur: nom de fichier de sortie manquant après '-o'.") sys.exit(1) else: timestamp = time.strftime("%Y%m%d") output_file_html = f"{output_path}OUTIL_{switch_type}_{timestamp}.html" output_file_html = verify_if_file_exists(output_file_html) html_file = OUTIL(output_path, output_file_html) print(f"✓ Processus terminé. Fichiers générés:\n - JSON: {output_file1_json} & {output_file2_json}\n - HTML: {html_file}") ``` > **Note :** Remplacez **`X`** de la première ligne par la lettre souhaitez (en dehors de celles déjà existante [o,d,u,s,i])'. 3. Mettez à jour les instructions textuelles d'usage affichées dans la console si le paramètre saisi est incorrect afin d'inclure `"OUTIL"` dans la liste des choix valides. ```python print(" -X Generate OUTIL report (optional)") ``` > **Note :** Remplacez **`X`** par la lettre précédemmment choisi'. ## Étape 3 : Adaptation de l'Interface Graphique (GUI) Afin que le nouveau modèle apparaisse dans l'interface graphique unifiée : 1. Ouvrez le fichier de gestion de la GUI (`gui_switch.py` racine ou script GUI dédié). 2. Dans la fonction `open_switch_gui_multi` : - Ajouter la variable : ```python OUTIL = tk.BooleanVar() ``` - Dans la fonction `process()`, ajouter : ```python if OUTIL.get(): cmd.append("-X") ``` - Ajouter égalemment dans la fonction `open_switch_gui_multi`, le bouton de sélection de l'outil avec les autres existant : ```python ttk.Checkbutton( content, text="Description courte de l'outil", variable=OUTIL ).pack(anchor="w", padx=10, pady=(0, 0)) OUTIL.set(True) ``` 3. Dans la fonction `open_switch_gui` : - Répéter les mêmes opérations que pour `open_switch_gui_multi` - Dans la fonction `update_output_label(*args)` ajouter et modifier les éléments suivants : ```python def update_output_label(*args): ... if output_var.get(): #ligne déjà existante f_OUTIL = os.path.join(OUTPUT_DIR, f"OUTIL_{fw}_{output_var.get()}.xlsx") ... else : f_OUTIL = os.path.join(OUTPUT_DIR, f"OUTIL_{fw}_{dt}.xlsx") ... output_label_var.set("Fichier de sortie :\n" + s_json1 + "\n" + s_json2 + ("\n" + s_uplink if rapport_uplink.get() else "") + ("\n" + s_stack if rapport_stack.get() else "") + ("\n" + s_interfaces if rapport_interfaces.get() else "") + ("\n" + s_schema if schema_infra.get() else "") + ("\n" + f_OUTIL if OUTIL.get() else "")) #ligne déjà existante a modifier ``` - Ajouter vers la fin de la fonction `open_switch_gui` avec les autres existant : ```python OUTIL.trace_add("write", update_output_label) ``` 4. Ouvrez le fichier de gestion principale de la GUI (`main.py` racine ou script GUI dédié). - Dans la fonction `open_main_gui()` ajouter dans le Label du Switch : ```python "\n + possibilité de générer un rapport des OUTIL", ```