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
|
skipped = 0
|
||||||
|
|
||||||
for r in rows:
|
for r in rows:
|
||||||
vm_name = (r.get("Machine virtuelle->Nom") or "").strip()
|
# Hostname peut venir de Machine virtuelle / Serveur / Nom selon l'export iTop
|
||||||
ip = (r.get("Adresse IP") or "").strip()
|
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
|
gw = (r.get("Passerelle") or "").strip() or None
|
||||||
mask = (r.get("Masque de sous réseau") or "").strip() or None
|
mask = (r.get("Masque de sous réseau") or "").strip() or None
|
||||||
vrf = (r.get("VRF") or "").strip() or None
|
vrf = (r.get("VRF") or "").strip() or None
|
||||||
@ -56,21 +61,19 @@ def main():
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
try:
|
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("""
|
conn.execute(text("""
|
||||||
INSERT INTO server_ips (server_id, ip_address, is_primary, gateway, netmask, vrf)
|
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})
|
"""), {"sid": srv.id, "ip": ip, "gw": gw, "mask": mask, "vrf": vrf})
|
||||||
linked += 1
|
linked += 1
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# colonnes optionnelles peut-être absentes, fallback minimal
|
print(f" [ERR] {vm_name} {ip}: {str(e)[:150]}")
|
||||||
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
|
skipped += 1
|
||||||
|
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user