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 automatiske.

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

I dagens raske guide, vil jeg introdusere deg for å automatisere SSH ved å bruke 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 først og fremst fokuserer på forskjellene mellom paramiko og netmiko ville være for kort-en enkel tabell ville være tilstrekkelig-og ikke-betong. Ved å ta denne tilnærmingen, vil du være bedre i stand til å eksperimentere med dem og se hva som gjør hva og hvordan.

La oss komme i gang:

Hva er Paramiko?

Det offisielle nettstedet definerer Paramiko som følger:

“Paramiko er en pyton (2.7, 3.4+) Implementering av SSHV2 -protokollen som gir både klient- og serverfunksjonalitet.”

Jeg håper det var klart. Grunnlaget betyr det Paramiko er et Python -bibliotek for å samhandle 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 utfører deretter kommandoer.

La oss se hvordan Paramiko kan hjelpe med det.

Hvordan installere Paramiko

For å bruke Paramiko, må vi installere den. Du burde ha Python - helst Python 2 - installert på maskinen din. Bruk Pip, skriv inn kommandoen nedenfor for å installere Paramiko.

sudo pip install paramiko
Python -m pip install paramiko

Hvis du ønsker å bygge fra kilden, kan du se det offisielle Paramiko GitHub -depotet ved å bruke 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-det støtter også andre parametere, men siden vi ikke krever dem, kan vi ignorere dem for nå.

Connect (hostname, port = 22, brukernavn = ingen, passord = ingen, pkey = ingen, key_filename = ingen, timeout = ingen, tillatt_agent = true, look_for_keys = true, komprimerer = falsk, sokk = ingen, gss_auth = falsk, gss_kex = FALSE, GSS_DELEG_CREDS = TRUE, GSS_HOST = ingen, banner_timeout = ingen, autor_timeout = ingen, gss_trust_dns = true, passphrase = ingen, deaktivert_algoritmer = ingen)

Bruke denne funksjonen, som er tilgjengelig i Paramiko. Klient.Sshclient.koble til (), kobles til det spesifiserte vertsnavnet, og autentiserer det. Målsystemet blir sjekket mot de eksisterende lokale systemnøklene (pålitelig).

Hvis du har en spesifikk vertsfil, kan du bruke Load_Host_Keys () -metoden og angi Paramiko SSH -klienten til å legge til enhver ukjent vert til Paramiko.Autoaddpolicy (). Hvis du bruker klienten i upålitelige systemer, unngå å bruke paramikoen.Autoaddpolicy.

Koble til SSH med et passord

Fra Connect -metoden kan vi se at vi har brukernavn og passordparametere som vi kan bruke for å koble oss 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/kjente_hosts ")
klient.set_missing_host_key_policy (autoaddpolicy ())
klient.Connect (Hostname = "Linuxhint.com ", brukernavn =" admin ", passord =" adminpassword ")
klient.Lukk()

Hvis du møter problemer når du importerer Paramiko SSHClient -klasse, kan du henvise til følgende StackOverflow -spørsmål:

https: // stackoverflow.com/spørsmål/29378234/python-import-paramiko-error-cannot-import-name-util

Koble SSH via tast

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

Vurder koden nedenfor.

fra Paramiko import 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.Connect ('Linuxhint.com ', brukernavn =' admin ', key_filename =' ssh_key.PEM ', PASSPHRASE =' ADMINPASSPHRASE ')
klient.Lukk()

Kjører kommandoer over SSH

Når du har fått tilgang til systemet ved hjelp av SSH (over paramiko), kan du utføre en serie kommandoer. Tenk på følgende kodebit:

fra Paramiko import sshclient
klient = sshclient ()
klient.LOAD_SYSTEM_HOST_KEYS ()
klient.Connect ('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 for å 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: // dokumenter.paramiko.org/en/stabil/
https: // github.com/paramiko/paramiko

Hva er Netmiko?

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

  • Enhetsstøtte
  • Opptreden

Når du jobber med den 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 på enhetsstøtting, noe som fører til etterslep og krasjer-du kan sjekke de støttede enhetene på 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. Derimot 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 -økten være mer enn en side. Ved hjelp av vanlige SSH-økter må du legge til et inngangslignende rom for å vise neste side. Netmiko gir deg en måte å overstyre dette på.

Fordeler med NetMiko fremfor Paramiko er:

  • Automatisk koble til via SSH til nettverksenheter.
  • Det gir enklere utførelse av show -kommandoer og datautgang.
  • Tilbyr enklere funksjonalitet for konfigurasjonskommandoer inkludert forpliktelseshandlinger.
  • Support med flere enheter på tvers av nettverksenhetsleverandører og plattformer.

Hvordan installere NetMiko

Å installere NetMiko er også relativt enkelt:

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

Pip installer NetMiko
python -m pip install netmiko

Koble til SSH ved hjelp av NetMiko

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

Vurder kodebiten nedenfor.

# Importmoduler
Fra Netmiko Import ConnectHandler
# Enhetsinfo i ordbokformat.
enhet_config = "enhet_type": "cisco_ios",
"IP": "192.168.0.1",
"Brukernavn": "Admin",
"Passord": "Passord",
"Hemmelighet": "Passord"

tilkobling = ConnectHandler (** enhet_config)

Ved å bruke den enkle koden ovenfor, har du en SSH -tilkobling til enheten. Du kan også sende enhetsinformasjonen direkte i stedet for å overføre den til en ordbok.

Når du har en SSH -økt, kan du utføre kommandoer ved hjelp av Send_Command () -funksjonen. Funksjoner støttet av NetMiko inkluderer:

Netmiko Vanlige brukte metoder:

  • net_connect.Send_Command () - Denne funksjonen sender kommandoer ned en nettverkskanal og returnerer utgang basert på mønster.
  • net_connect.send_command_timing () - Returnerer utdata basert på timing fra en kommando sendt ned en nettverkskanal.
  • net_connect.Send_Config_set () - Bruker konfigurasjonsinnstillinger for eksterne enheter.
  • net_connect.send_config_from_file () - Bruker konfigurasjonsinnstillinger fra en ekstern fil
  • net_connect.save_config () - Eksport og lagrer kjørekonfigurasjonen som oppstartkonfigurasjon.
  • net_connect.Aktiver () - Spøring enheten for å aktivere aktiveringsmodus.
  • net_connect.find_prompt () - Returner den nåværende ruteren
  • net_connect.Commit () - Kjører Commit -kommandoer på enheter som Juniper og IOS -XR
  • net_connect.frakobling () - avslutter øktene
  • net_connect.writ_channel () - Aktiverer lave nivåskriv
  • net_connect.read_channel () - Aktiverer lavt nivå Read.

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 raske guiden diskuterte vi hvordan du bruker Paramiko for generiske SSH -tilkoblinger og NetMiko Network Device Management, som 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.