import_sanef_ips: CAST inet + hostname multi-source + skip doublons
This commit is contained in:
parent
b66ef0a122
commit
c905ab6db3
@ -39,8 +39,13 @@ def main():
|
||||
skipped = 0
|
||||
|
||||
for r in rows:
|
||||
vm_name = (r.get("Machine virtuelle->Nom") or "").strip()
|
||||
ip = (r.get("Adresse IP") or "").strip()
|
||||
# Hostname peut venir de Machine virtuelle / Serveur / Nom selon l'export iTop
|
||||
vm_name = (r.get("Machine virtuelle->Nom") or r.get("Machine virtuelle")
|
||||
or r.get("Serveur->Nom") or r.get("Serveur")
|
||||
or r.get("Système->Nom") or r.get("Nom") or "").strip()
|
||||
if vm_name:
|
||||
vm_name = vm_name.split(".")[0].lower()
|
||||
ip = (r.get("Adresse IP") or r.get("IP") or "").strip()
|
||||
gw = (r.get("Passerelle") or "").strip() or None
|
||||
mask = (r.get("Masque de sous réseau") or "").strip() or None
|
||||
vrf = (r.get("VRF") or "").strip() or None
|
||||
@ -56,22 +61,20 @@ def main():
|
||||
continue
|
||||
|
||||
try:
|
||||
existing = conn.execute(text(
|
||||
"SELECT id FROM server_ips WHERE server_id=:sid AND ip_address=CAST(:ip AS inet)"
|
||||
), {"sid": srv.id, "ip": ip}).fetchone()
|
||||
if existing:
|
||||
skipped += 1
|
||||
continue
|
||||
conn.execute(text("""
|
||||
INSERT INTO server_ips (server_id, ip_address, is_primary, gateway, netmask, vrf)
|
||||
VALUES (:sid, :ip, true, :gw, :mask, :vrf)
|
||||
VALUES (:sid, CAST(:ip AS inet), true, :gw, :mask, :vrf)
|
||||
"""), {"sid": srv.id, "ip": ip, "gw": gw, "mask": mask, "vrf": vrf})
|
||||
linked += 1
|
||||
except Exception as e:
|
||||
# colonnes optionnelles peut-être absentes, fallback minimal
|
||||
try:
|
||||
conn.execute(text("""
|
||||
INSERT INTO server_ips (server_id, ip_address, is_primary)
|
||||
VALUES (:sid, :ip, true)
|
||||
"""), {"sid": srv.id, "ip": ip})
|
||||
linked += 1
|
||||
except Exception as e2:
|
||||
print(f" [ERR] {vm_name} {ip}: {str(e2)[:150]}")
|
||||
skipped += 1
|
||||
print(f" [ERR] {vm_name} {ip}: {str(e)[:150]}")
|
||||
skipped += 1
|
||||
|
||||
conn.close()
|
||||
print(f"[DONE] Liés: {linked} | Hostname introuvable: {missing} | Ignoré: {skipped}")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user