4.6 KiB
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 :
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 :
- Importez votre nouvelle fonction en haut du fichier :
from scripts.export_OUTIL import main as rapport_OUTIL
- Ajoutez la condition correspondante dans le bloc de sélection de l'outil :
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
Xde la première ligne par la lettre souhaitez (en dehors de celles déjà existante [o,d,u,s,i])'.
- 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.
print(" -X Generate OUTIL report (optional)")
Note : Remplacez
Xpar 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 :
- Ouvrez le fichier de gestion de la GUI (
gui_switch.pyracine ou script GUI dédié). - Dans la fonction
open_switch_gui_multi:
- Ajouter la variable :
OUTIL = tk.BooleanVar()
- Dans la fonction
process(), ajouter :
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 :
ttk.Checkbutton(
content,
text="Description courte de l'outil",
variable=OUTIL
).pack(anchor="w", padx=10, pady=(0, 0))
OUTIL.set(True)
- 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 :
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_guiavec les autres existant :
OUTIL.trace_add("write", update_output_label)
- Ouvrez le fichier de gestion principale de la GUI (
main.pyracine ou script GUI dédié).
- Dans la fonction
open_main_gui()ajouter dans le Label du Switch :
"\n + possibilité de générer un rapport des OUTIL",