align_dmz: auto-detecte sheet (Histo-2025 prioritaire) + index DMZ via header

This commit is contained in:
Pierre & Lumière 2026-04-14 21:39:14 +02:00
parent 38756fbfd6
commit ec82a7cd1e

View File

@ -37,7 +37,8 @@ def is_dmz_value(v):
def main(): def main():
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument("xlsx_path") parser.add_argument("xlsx_path")
parser.add_argument("--sheet", default="Serveurs patchables 2026") parser.add_argument("--sheet", default=None,
help="Sheet a utiliser (auto: Histo-2025 ou Serveurs patchables 2026)")
parser.add_argument("--dry-run", action="store_true") parser.add_argument("--dry-run", action="store_true")
args = parser.parse_args() args = parser.parse_args()
@ -66,24 +67,28 @@ def main():
print(f"[INFO] Zone DMZ creee (id={dmz_id})") print(f"[INFO] Zone DMZ creee (id={dmz_id})")
wb = openpyxl.load_workbook(args.xlsx_path, data_only=True) wb = openpyxl.load_workbook(args.xlsx_path, data_only=True)
if args.sheet not in wb.sheetnames:
print(f"[ERR] Sheet '{args.sheet}' introuvable. Sheets: {wb.sheetnames}") # Auto-detection sheet si pas specifie
sheet_name = args.sheet
if not sheet_name:
for candidate in ("Histo-2025", "Serveurs patchables 2026", "Histo_2025"):
if candidate in wb.sheetnames:
sheet_name = candidate
break
if not sheet_name or sheet_name not in wb.sheetnames:
print(f"[ERR] Sheet introuvable. Sheets disponibles: {wb.sheetnames}")
return return
ws = wb[args.sheet] ws = wb[sheet_name]
print(f"[INFO] Sheet utilisee: {sheet_name}")
header = [str(c.value).strip() if c.value else "" for c in ws[1]] header = [str(c.value).strip() if c.value else "" for c in ws[1]]
try: idx_host = next((i for i,h in enumerate(header) if h in ("Asset Name", "Hostname", "Nom")), -1)
idx_host = header.index("Asset Name") idx_dmz = next((i for i,h in enumerate(header) if h == "DMZ"), -1)
except ValueError: if idx_host == -1:
try: print(f"[ERR] Colonne Asset Name/Hostname/Nom introuvable. Headers: {header[:10]}")
idx_host = header.index("Hostname")
except ValueError:
print("[ERR] Colonne Asset Name/Hostname introuvable")
return return
try: if idx_dmz == -1:
idx_dmz = header.index("DMZ") print(f"[ERR] Colonne DMZ introuvable. Headers: {header}")
except ValueError:
print("[ERR] Colonne DMZ introuvable")
return return
print(f"[INFO] idx_host={idx_host} idx_dmz={idx_dmz}") print(f"[INFO] idx_host={idx_host} idx_dmz={idx_dmz}")