Python

Hva er forskjellen mellom Paramiko og Netmiko?

Hva er forskjellen mellom Paramiko og Netmiko?

Når det gjelder nettverk, er det et bredt spekter av perspektiver, og man kan ikke mestre hvordan man kan samhandle med alle enhetene i den virkelige verden. Imidlertid deler alle nettverksenheter lignende funksjonalitet som, når de mestres, er automatiserbare.

Som nevnt i mine andre opplæringsprogrammer, er programmerere late og alltid ute etter å forbedre effektiviteten - og gjør dermed minst mulig arbeid 🙂 -, og når det gjelder automatisering av nettverksrelaterte problemer, hopper mange ofte på sjansen.

I dagens hurtigguide vil jeg introdusere deg for å automatisere SSH ved hjelp av to populære Python-biblioteker: Paramiko og Netmiko. Vi vil lage enkle python-skript ved hjelp av de to bibliotekene for å automatisere SSH og samhandle med nettverksenheter.

Jeg velger denne tilnærmingen fordi en guide primært fokusert på forskjellene mellom Paramiko og Netmiko vil være for kort - et enkelt bord vil være tilstrekkelig og ikke konkret. Ved å ta denne tilnærmingen vil du være bedre i stand til å eksperimentere med dem og se hvilke som gjør hva og hvordan.

La oss komme i gang:

Hva er Paramiko?

Den offisielle nettsiden definerer Paramiko som følger:

“Paramiko er en python (2.7, 3.4+) implementering av SSHv2-protokollen som gir både klient- og serverfunksjonalitet.”

Jeg håper det var klart. Grunnleggende betyr det Paramiko er et pythonbibliotek for interaksjon med SSH.

Nå:

Når vi vil logge på en server, vet vi at vi går til terminal-cmd, xterm, MobaXterm, eller bare Gnome Terminal-login, og deretter utfører kommandoer.

La oss se hvordan Paramiko kan hjelpe med det.

Hvordan installere Paramiko

For å bruke Paramiko, må vi installere den. Du bør ha Python - helst python 2 - installert på maskinen din. Bruk pip til å skrive inn kommandoen nedenfor for å installere Paramiko.

sudo pip installer Paramiko
Python -m pip install paramiko

Hvis du ønsker å bygge fra kilden, kan du se det offisielle Paramiko GitHub-depotet ved hjelp av den medfølgende ressursen:

https: // github.com / paramiko / paramiko

Koble til SSH ved hjelp av Paramiko

For å koble til SSH ved hjelp av Paramiko, bruker vi connect () -metoden, som krever vertsnavn-parameteren - den støtter også andre parametere, men siden vi ikke trenger dem, kan vi ignorere dem for nå.

koble til (vertsnavn, port = 22, brukernavn = Ingen, passord = Ingen, pkey = Ingen, nøkkelfilnavn = Ingen, timeout = Ingen, allow_agent = True, look_for_keys = True, compress = False, sock = None, gss_auth = False, gss_kex = Usann, gss_deleg_creds = True, gss_host = Ingen, banner_timeout = Ingen, auth_timeout = Ingen, gss_trust_dns = True, passphrase = Ingen, disabled_algorithms = Ingen)

Bruker denne funksjonen, som er tilgjengelig i paramiko. Klient.SSH-klient.connect (), kobler til det angitte vertsnavnet og autentiserer det. Målet systemet blir sjekket mot eksisterende lokale systemnøkler (klarert).

Hvis du har en bestemt vertsfil, kan du bruke metoden load_host_keys () og stille Paramiko SSH-klienten til å legge til en ukjent vert til paramiko.AutoAddPolicy (). Hvis du bruker klienten i ikke-klarerte systemer, unngå å bruke paramiko.AutoAddPolicy.

Koble SSH med et passord

Fra tilkoblingsmetoden kan vi se at vi har brukernavn og passordparametere som vi kan bruke til å koble til systemet. Vurder koden nedenfor for å koble SSH via brukernavn og passord.

fra paramiko import util, SSHClient, AutoAddPolicy
klient = SSHClient ()
klient.load_system_host_keys ()
klient.load_host_keys ("/ home / linuxhint /.ssh / kjent_hosts ")
klient.set_missing_host_key_policy (AutoAddPolicy ())
klient.koble til (vertsnavn = "linuxhint.com ", brukernavn =" admin ", passord =" AdminPassword ")
klient.Lukk()

Hvis du støter på problemer når du importerer Paramiko SSHClient-klassen, se følgende stackoverflow-spørsmål:

https: // stackoverflow.no / spørsmål / 29378234 / python-import-paramiko-error-kan ikke importere navn-util

Koble til SSH via nøkkel

Som vi alle vet, er det sikrere å koble SSH via nøkkel enn å bruke et rå passord. Paramiko vet dette og lar deg sende nøkkelfilen og koble til målsystemet.

Tenk på koden nedenfor.

fra paramiko import SSHClient
fra paramiko AutoAddPolicy
klient = SSHClient ()
klient.load_system_host_keys ()
klient.load_host_keys ('/ home / linuxhint /.ssh / kjent_hosts ')
klient.set_missing_host_key_policy (AutoAddPolicy ())
klient.koble til ('linuxhint.com ', brukernavn =' admin ', key_filename =' ssh_key.pem ', passphrase =' AdminPassphrase ')
klient.Lukk()

Kjører kommandoer over SSH

Når du får tilgang til systemet ved hjelp av SSH (over Paramiko), kan du utføre en rekke kommandoer. Vurder følgende kodebit:

klient = SSHClient ()
klient.load_system_host_keys ()
klient.koble til ('linuxhint.com ')
stdin, stdout, stderr = klient.exec_command ('bash ")
stdin.Lukk()
stdout.Lukk()
stderr.Lukk()
klient.Lukk()

På dette tidspunktet vet du hvordan du bruker Paramiko-biblioteket til å automatisere SSH. Som du kan forestille deg, er dette ikke en omfattende Paramiko-guide, og vi dykker ikke inn i detaljer relatert til hva verktøyet gjør. Målet var å vise deg implementeringen.

For mer informasjon, se mer omfattende materialer som:

https: // docs.paramiko.org / no / stabil /
https: // github.com / paramiko / paramiko

Hva er Netmiko?

Netmiko er veldig populær og lik Paramiko med noen få signifikante forskjeller:

Når du arbeider med virkelige nettverk, vil du komme over forskjellige enhetsmodeller. Dermed trenger du et pålitelig verktøy som kan hjelpe deg med å automatisere prosessen. I noen tilfeller kan du ikke bruke Paramiko på grunn av begrensninger for enhetsstøtte, noe som fører til forsinkelser og krasj - du kan sjekke de støttede enhetene i den offisielle dokumentasjonen. Det er også betydelig tregere enn Netmiko.

Paramiko er mer en generisk SSH-modul som du kan bruke til å automatisere spesifikke SSH-oppgaver. I kontrast er Netmiko bredere og godt optimalisert for å administrere nettverksenheter som brytere og rutere.

Abstraksjon er den andre fordelen ved å bruke Netmiko. Netmiko gir en enkel funksjon du kan bruke til å deaktivere personsøk. For eksempel kan en utgang fra SSH-sesjonen være mer enn én side. Ved å bruke vanlige SSH-økter, må du legge til et input-lignende mellomrom for å vise neste side. Netmiko gir deg en måte å overstyre dette på.

Fordelene med Netmiko fremfor Paramiko er:

Hvordan installere Netmiko

Installering av Netmiko er også relativt enkelt:

Alt du trenger å gjøre er å sikre at du har Python og pip installert på systemet ditt og utføre kommandoen:

pip installere netmiko
python -m pip installere netmiko

Koble til SSH ved hjelp av Netmiko

Det er veldig enkelt å koble til SSH-økter på enheten ved hjelp av Netmiko. Husk at Netmiko er mer optimalisert for enheter som rutere og ikke generisk SSH.

Tenk på kodebiten nedenfor.

#import moduler
fra netmiko import ConnectHandler
# enhetsinformasjon i ordbokformat.
device_config =
“Device_type”: “cisco_ios”,
“Ip”: “192.168.0.1",
“Brukernavn”: “admin”,
“Passord”: “passord”,
“Hemmelig”: “passord”

tilkobling = ConnectHandler (** device_config)

Ved å bruke den enkle koden ovenfor vil du ha en SSH-forbindelse til enheten. Du kan også sende enhetsinformasjonen direkte i stedet for å sende den til en ordbok.

Når du har en SSH-økt, kan du utføre kommandoer ved hjelp av send_command () -funksjonen. Funksjoner som støttes av netmiko inkluderer:

Netmiko vanlige metoder:

Som nevnt tidligere er dette ikke en guide for hvordan du bruker Netmiko, men en enkel retning av hva Netmiko og Paramiko er. Sjekk den offisielle dokumentasjonen for mer informasjon.

https: // github.com / ktbyers / netmiko

Konklusjon

I denne hurtigveiledningen diskuterte vi hvordan du bruker paramiko til generiske SSH-tilkoblinger og Netmiko nettverksenhetsadministrasjon, illustrerer forskjellene mellom de to.

Å konkludere:

Paramiko Netmiko
Nyttig for generisk ssh bruk Mest nyttig for nettverksenhetskonfigurasjon.
Begrenset støtte for et bredt spekter av nettverksenheter. Støtter et bredt spekter av nettverksenheter.
Hvordan laste ned og spille Sid Meier's Civilization VI på Linux
Introduksjon til spillet Civilization 6 er et moderne syn på det klassiske konseptet som ble introdusert i serien av Age of Empires-spillene. Ideen va...
Hvordan installere og spille Doom på Linux
Introduksjon til Doom Doom-serien stammer fra 90-tallet etter utgivelsen av den originale Doom. Det ble en øyeblikkelig suksess, og fra den tiden og u...
Vulkan for Linux-brukere
Med hver nye generasjon grafikkort ser vi spillutviklere skyve grensene for grafisk troskap og komme et skritt nærmere fotorealisme. Men til tross for...