""" Importeer scanresultaten naar Neo4j. Gebruik: python import_to_neo4j.py python import_to_neo4j.py --password jouw_wachtwoord """ import sys import logging import os logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") logger = logging.getLogger(__name__) def main(): # Password via CLI argument of env var password = os.getenv("NEO4J_PASSWORD", "") if "--password" in sys.argv: idx = sys.argv.index("--password") if idx + 1 < len(sys.argv): password = sys.argv[idx + 1] if not password: print("Geef Neo4j wachtwoord mee: NEO4J_PASSWORD=... python import_to_neo4j.py") print("Of: python import_to_neo4j.py --password jouw_wachtwoord") sys.exit(1) os.environ["NEO4J_PASSWORD"] = password from src.neo4j_client import init_schema, import_scan, get_all_devices, get_network_summary, close from src.scan_data import SCAN_RESULTS print("=" * 60) print("Neo4j Thuisnetwerk Import") print("=" * 60) # Init try: init_schema() except Exception as e: logger.error("Kan geen verbinding maken met Neo4j: %s", e) logger.error("Check of Neo4j draait op neo4j://192.168.1.211:49153") sys.exit(1) # Import print(f"\nImporteren van {len(SCAN_RESULTS)} devices...") try: summary = import_scan(SCAN_RESULTS) print(f"\n{summary}") except Exception as e: logger.error("Import fout: %s", e) close() sys.exit(1) # Toon resultaten print("\n" + "-" * 60) network_summary = get_network_summary() print(f"Database: {network_summary['total_devices']} devices, " f"{network_summary['total_ports']} unieke poorten") devices = get_all_devices() print(f"\n{'IP':<16} {'Naam':<32} {'OS':<28} {'Poorten'}") print("-" * 90) for d in devices: ports = d.get("ports") or [] port_str = ", ".join(str(p["port"]) for p in ports if p and p.get("port")) print(f"{d['ip']:<16} {d['hostname'][:31]:<32} {d['os_guess'][:27]:<28} {port_str}") # Categorieen print(f"\n--- Categorieen ---") from collections import Counter cats = Counter(d["os_guess"] for d in devices) for cat, count in cats.most_common(): print(f" {cat:<40} {count}x") close() print("\nKlaar! Je netwerk staat nu in Neo4j.") if __name__ == "__main__": main()