Sicra Header Logo
  • Karriere
  • Om oss
  • Folk
NorskEnglish
Kontakt oss
  1. Kunnskap
  2. Innsikter
  3. Blogg
Blogg
04.09.2025
min tid å lese

[Min reise mot CCIE Automation #4] Automatisering av nettverksoppdagelse og rapporter med Python og Ansible

I blogg #4 av CCIE Automation-reisen automatiserer jeg nettverksoppdagelse og rapportering ved hjelp av Python og Ansible. Ved å kombinere subnett-skanning, faktainnsamling og malbasert rapportering bygges en helhetlig arbeidsflyt som resulterer i en oversiktlig HTML-rapport over nettverket.

 

<span id="hs_cos_wrapper_name" class="hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_text" style="" data-hs-cos-general-type="meta_field" data-hs-cos-type="text" >[Min reise mot CCIE Automation #4] Automatisering av nettverksoppdagelse og rapporter med Python og Ansible</span>
bilde
Bjørnar LintvedtSenior Network Engineer

Senior Network Engineer med fokus på nettverk, sikkerhet og automasjon.

(Denne artikkelen var tidligere en del av Bluetree.no. Siden Sicra og Bluetree har slått seg sammen, er nå innhold fra Bluetree overført til Sicra.)

[Min reise mot CCIE Automation #4] Automatisering av nettverksoppdagelse og rapporter med Python og Ansible er del av en serie som følger min reise mot CCIE Automation. I forrige innlegg jobbet jeg med NETCONF og et Orchestration API. I dette innlegget fokuserer jeg på automatisering av nettverksoppdagelse og rapportering med Python og Ansible.

Blogg #4

Etter NETCONF i blogg #3 ønsket jeg å ta tak i noe nettverksingeniører ofte gjør manuelt – oppdage enheter, samle fakta og dokumentere naboer – og automatisere dette ved hjelp av Python og Ansible.

I dette innlegget er prosjektet nettverksoppdagelse og rapportering. En liten arbeidsflyt som skanner et subnett, oppdager enheter, kjører kommandoer og genererer en oversiktlig HTML-rapport.

Det jeg har bygget

1. Python discovery-skript

Et Python-basert Click-program (network_discovery.py) som:

  • Skanner et subnett etter enheter med SSH-port åpen

  • Logger inn med brukernavn og passord ved hjelp av Netmiko

  • Detekterer om enheten kjører IOS eller NX-OS

  • Bygger en Ansible inventory-fil med korrekt ansible_network_os

  • Kjører en Ansible-playbook som samler fakta om de oppdagede enhetene:
    - Hostname
    - Maskinvaremodell
    - Programvareversjon
    - CDP/LLDP-naboer

  • Og deretter genererer en HTML-rapport som viser alle enheter og innsamlet informasjon

Eksempel fra scriptet (se GitLab-repoet for full detaljer:

image-png-Sep-05-2025-08-20-04-0999-AM

2. Ansible playbook

Playbooken (gather_device_facts.yml) kjøres mot de oppdagede enhetene, samler system- og naboinformasjon og genererer en HTML-rapport.

Eksempel på innsamling av data fra oppdagede enheter:

image-png-Sep-05-2025-08-28-20-1232-AM

Foreløpig støttes kun Cisco IOS og Nexus, men dette kan enkelt utvides til andre plattformer.

3. HTML-rapport

I stedet for rå CLI-output genereres én samlet HTML-rapport ved hjelp av en Jinja2-mal. Hver enhet listes i en tabell, med utvidbare seksjoner for CDP- og LLDP-informasjon.

Eksempel fra Jinja2-malen:

image-png-Sep-05-2025-08-31-31-9614-AM

4. Resultatet – vis HTML-rapporten

Du får en liste over alle oppdagede enheter med kolonner for:

  • IP
  • Hostname
  • Modell
  • Versjon
  • Operativsystem

Til slutt vises en oversikt over alle CDP- og/eller LLDP-naboer for hver oppdagede enhet.

image-png-Sep-05-2025-08-35-48-4072-AM

Hvordan kjøre løsningen

Se README i GitLab-repositoriet.

Oppdatering av tjenestesamspill

Jeg har lagt dette nye brukstilfellet inn i Nautix-diagrammet.

image-png-Sep-05-2025-08-48-46-4010-AM

Hva skjer videre

I blogg 5 vil jeg fokusere på å jobbe med pyATS:

Blueprint item 3.3 Endre og feilsøke en automatisert test ved hjelp av pyATS for å møte gitte krav. 

3.3.a Opprette en testbed-fil for tilkobling til Cisco IOS-, IOS XE- eller NX-OS-enheter
3.3.b Hente gjeldende konfigurasjon og operasjonell tilstand fra enheter ved hjelp av Genie-parsere og -modeller inkludert i pyATS
3.3.c Utvikle og kjøre testjobber og skript ved hjelp av AEtest for å verifisere nettverkshelse

Nyttige lenker

  • GitLab Repo – Min CCIE Automation kode
  • Ansible dokumentasjon

Bloggserie

  • [Min reise mot CCIE Automation #1] Introduksjon + bygging av en Python CLI-applikasjon

  • [Min reise mot CCIE Automation #2] Inventory REST API og mikrotjenestearkitektur

  • [Min reise mot CCIE Automation #3] Orchestration API og NETCONF

  • [Min reise mot CCIE Automation #5] Bygging av nettverkspipelines for pålitelige endringer med pyATS og GitLab CI

  • [Min reise mot CCIE Automation #6] Automatisering av Cisco ACI-utrulling med Terraform, Vault og GitLab CI

  • [Min reise mot CCIE Automation #7] Utforsking av Model-Driven Telemetry for sanntidsinnsikt i nettverket

  • [Min reise mot CCIE Automation #8] Utforsking av ThousandEyes og automatisering av Enterprise Agent-utrulling

  • [Min reise mot CCIE Automation #9] Anvendelse av OWASP Secure Coding Practices

  • [Min reise mot CCIE Automation #10] Fra Docker Compose til Kubernetes

Trenger du bistand?

Vi tar gjerne en uforpliktende prat. 
Kontakt oss

Les mer

AI er billig nå. Slik unngår du å bli låst inn i fremtiden.
Blogg

AI er billig nå. Slik unngår du å bli låst inn i fremtiden.

AI er billig nå. Bygg løsninger som tåler høyere priser senere.
Agentiske sikkerhetssentere (SOC) er her. Men hvordan kontrollerer du agentene som tar beslutningene?
Blogg

Agentiske sikkerhetssentere (SOC) er her. Men hvordan kontrollerer du agentene som tar beslutningene?

Cybersikkerhet
SOC
CISO
Agentiske SOC-er er her. Men hvem overvåker agentene som overvåker deg?
Har du forberedt deg på den dagen du ikke kan logge inn lenger?
Blogg

Har du forberedt deg på den dagen du ikke kan logge inn lenger?

Fagblogg
Hva skjer med ditt digitale liv når du ikke kan logge inn lenger?
11 sikkerhetstiltak virksomheten bør ha på plass før ferien
Blogg

11 sikkerhetstiltak virksomheten bør ha på plass før ferien

Cybersikkerhet
CISO
11 tiltak som gjør virksomheten bedre rustet før sommerferien.

Hold deg oppdatert
Motta siste nytt fra Sicra

Linker
BærekraftFAQPartnereSertifiseringerKarrierePresse
Kontakt
Tel: +47 648 08 488
E-post: firmapost@sicra.no

Posthuset, Biskop Gunnerus' gate 14A, 0185 Oslo

Følg oss på Instagram

Følg oss på LinkedIn
Sertifiseringer
iso27001-white
ISO 27001
miljofyrtarnlogo-hvit-rgb
Miljøfyrtårn
iso9001-white-removebg-preview
ISO 9001
Sicra Footer Logo
Sicra © 2025
Personvern