Python

Hvad er forskellen mellem Paramiko og Netmiko?

Hvad er forskellen mellem Paramiko og Netmiko?

Når det kommer til netværk, er der en bred vifte af perspektiver, og man kan ikke mestre, hvordan man interagerer med alle enheder i den virkelige verden. Imidlertid deler alle netværksenheder lignende funktionalitet, som, når de er mestret, kan automatiseres.

Som nævnt i mine andre tutorials er programmører dovne og altid på udkig efter at forbedre effektiviteten - og dermed gøre det mindst arbejde work - og når det kommer til automatisering af netværksrelaterede problemer, springer mange ofte med chancen.

I dagens hurtige guide introducerer jeg dig til automatisering af SSH ved hjælp af to populære Python-biblioteker: Paramiko og Netmiko. Vi opretter enkle python-scripts ved hjælp af de to biblioteker til at automatisere SSH og interagere med netværksenheder.

Jeg vælger denne tilgang, fordi en guide primært fokuseret på forskellene mellem Paramiko og Netmiko ville være for kort - en simpel tabel ville være tilstrækkelig og ikke konkret. Ved at tage denne tilgang vil du være bedre i stand til at eksperimentere med dem og se, hvad der gør hvad og hvordan.

Lad os komme igang:

Hvad er Paramiko?

Den officielle hjemmeside definerer Paramiko som følger:

“Paramiko er en Python (2.7, 3.4+) implementering af SSHv2-protokollen, der giver både klient- og serverfunktionalitet.”

Jeg håber, det var klart. Grundlæggende betyder det Paramiko er et pythonbibliotek til interaktion med SSH.

Nu:

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

Lad os se, hvordan Paramiko kan hjælpe med det.

Sådan installeres Paramiko

For at bruge Paramiko skal vi installere det. Du skal have Python - helst python 2 - installeret på din maskine. Brug pip til at indtaste kommandoen nedenfor for at installere Paramiko.

sudo pip installer Paramiko
Python -m pip installer paramiko

Hvis du ønsker at bygge fra kilden, skal du henvise til det officielle Paramiko GitHub-lager ved hjælp af den medfølgende ressource:

https: // github.com / paramiko / paramiko

Opretter forbindelse til SSH ved hjælp af Paramiko

For at oprette forbindelse til SSH ved hjælp af Paramiko bruger vi metoden connect (), som kræver værtsnavnparameteren - den understøtter også andre parametre, men da vi ikke har brug for dem, kan vi ignorere dem for nu.

tilslut (værtsnavn, port = 22, brugernavn = Ingen, adgangskode = Ingen, pkey = Ingen, nøglefilnavn = Ingen, timeout = Ingen, allow_agent = Sand, look_for_keys = Sand, komprimér = Falsk, sok = Ingen, gss_auth = Falsk, gss_kex = Falsk, gss_deleg_creds = Sand, gss_host = Ingen, banner_timeout = Ingen, auth_timeout = Ingen, gss_trust_dns = Sand, adgangssætning = Ingen, deaktiveret_algoritmer = Ingen)

Brug af denne funktion, som er tilgængelig i paramiko. Klient.SSH-klient.connect (), opretter forbindelse til det angivne værtsnavn og godkender det. Målsystemet kontrolleres mod de eksisterende lokale systemnøgler (betroet).

Hvis du har en bestemt værtsfil, kan du bruge metoden load_host_keys () og indstille Paramiko SSH-klienten til at tilføje en ukendt vært til paramiko.AutoAddPolicy (). Hvis du bruger klienten i ikke-tillid til systemer, skal du undgå at bruge paramiko.AutoAddPolicy.

Tilslutning af SSH med en adgangskode

Fra tilslutningsmetoden kan vi se, at vi har de brugernavn og adgangskodeparametre, som vi kan bruge til at oprette forbindelse til systemet. Overvej koden nedenfor for at forbinde SSH via brugernavn og adgangskode.

fra paramiko import util, SSHClient, AutoAddPolicy
klient = SSHClient ()
klient.load_system_host_keys ()
klient.load_host_keys ("/ home / linuxhint /.ssh / kendt_hosts ")
klient.set_missing_host_key_policy (AutoAddPolicy ())
klient.tilslut (værtsnavn = "linuxhint.com ", brugernavn =" admin ", password =" AdminPassword ")
klient.tæt()

Hvis du støder på problemer, når du importerer Paramiko SSHClient-klassen, henvises til følgende spørgsmål om stackoverflow:

https: // stackoverflow.com / spørgsmål / 29378234 / python-import-paramiko-fejl-kan ikke importere-navn-util

Tilslutning af SSH via nøgle

Som vi alle ved, er det sikrere at forbinde SSH via nøgle end at bruge en rå adgangskode. Paramiko ved dette og giver dig mulighed for at videregive nøglefilen og oprette forbindelse til målsystemet.

Overvej koden nedenfor.

fra paramiko import SSHClient
fra paramiko AutoAddPolicy
klient = SSHClient ()
klient.load_system_host_keys ()
klient.load_host_keys ('/ home / linuxhint /.ssh / kendt_hosts ')
klient.set_missing_host_key_policy (AutoAddPolicy ())
klient.tilslut ('linuxhint.com ', brugernavn =' admin ', key_filename =' ssh_key.pem ', passphrase =' AdminPassphrase ')
klient.tæt()

Kører kommandoer over SSH

Når du først har fået adgang til systemet ved hjælp af SSH (over Paramiko), kan du udføre en række kommandoer. Overvej følgende kodestykke:

klient = SSHClient ()
klient.load_system_host_keys ()
klient.tilslut ('linuxhint.com ')
stdin, stdout, stderr = klient.exec_command ('bash ")
stdin.tæt()
stdout.tæt()
stderr.tæt()
klient.tæt()

På dette tidspunkt ved du, hvordan du bruger Paramiko-biblioteket til at automatisere SSH. Som du kan forestille dig, er dette ikke en omfattende Paramiko-guide, og vi dykker ikke ned i detaljer relateret til hvad værktøjet gør. Målet var at vise dig dens implementering.

For mere information henvises til mere omfattende materialer såsom:

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

Hvad er Netmiko?

Netmiko er meget populær og ligner Paramiko med et par signifikante forskelle:

Når du arbejder på virkelige netværk, vil du støde på forskellige enhedsmodeller. Således har du brug for et pålideligt værktøj, der kan hjælpe dig med at automatisere processen. I nogle tilfælde kan du ikke bruge Paramiko på grund af begrænsninger for enhedsstøtte, hvilket fører til forsinkelser og nedbrud - du kan kontrollere de understøttede enheder i den officielle dokumentation. Det er også betydeligt langsommere end Netmiko.

Paramiko er mere af et generisk SSH-modul, som du kan bruge til at automatisere specifikke SSH-opgaver. I modsætning hertil er Netmiko bredere og godt optimeret til styring af netværksenheder såsom switche og routere.

Abstraktion er den anden fordel ved at bruge Netmiko. Netmiko giver en enkel funktion, du kan bruge til at deaktivere personsøgning. For eksempel kan et output fra SSH-sessionen være mere end en side. Ved hjælp af regelmæssige SSH-sessioner bliver du nødt til at tilføje et input-lignende rum for at vise den næste side. Netmiko giver dig en måde at tilsidesætte dette på.

Fordele ved Netmiko i forhold til Paramiko er:

Sådan installeres Netmiko

Installation af Netmiko er også relativt let:

Alt hvad du skal gøre er at sikre, at du har Python og pip installeret på dit system og udføre kommandoen:

pip installere netmiko
python -m pip installere netmiko

Opretter forbindelse til SSH ved hjælp af Netmiko

Tilslutning til enhedens SSH-sessioner ved hjælp af Netmiko er meget enkel. Husk, at Netmiko er mere optimeret til enheder som routere og ikke generisk SSH.

Overvej kodestykket nedenfor.

#import moduler
fra netmiko import ConnectHandler
# enhedsinfo i ordbogformat.
device_config =
“Device_type”: “cisco_ios”,
“Ip”: “192.168.0.1 ”,
“Brugernavn”: “admin”,
“Password”: “password”,
“Hemmelig”: “adgangskode”

forbindelse = ConnectHandler (** device_config)

Ved hjælp af den enkle kode ovenfor har du en SSH-forbindelse til enheden. Du kan også videregive enhedsoplysningerne direkte i stedet for at videregive dem til en ordbog.

Når du har en SSH-session, kan du udføre kommandoer ved hjælp af send_command () -funktionen. Funktioner understøttet af netmiko inkluderer:

Netmiko almindeligt anvendte metoder:

Som tidligere nævnt er dette ikke en guide til, hvordan man bruger Netmiko, men en simpel retning af, hvad Netmiko og Paramiko er. Se den officielle dokumentation for mere information.

https: // github.com / ktbyers / netmiko

Konklusion

I denne hurtige vejledning diskuterede vi, hvordan man bruger paramiko til generiske SSH-forbindelser og Netmiko netværksenhedsadministration, der illustrerer forskellene mellem de to.

Til slut:

Paramiko Netmiko
Nyttig til generisk ssh brug Mest nyttigt til konfiguration af netværksenheder.
Begrænset support til en lang række netværksenheder. Understøtter en bred vifte af netværksenheder.
Mus Sådan vender du musens og touchpadsens rulle retning i Windows 10
Sådan vender du musens og touchpadsens rulle retning i Windows 10
Mus og Touchpads gør ikke kun computing let, men mere effektiv og mindre tidskrævende. Vi kan ikke forestille os et liv uden disse enheder, men det er...
Mus Sådan ændres musemarkør og markørstørrelse, farve og skema på Windows 10
Sådan ændres musemarkør og markørstørrelse, farve og skema på Windows 10
Musemarkøren og markøren i Windows 10 er meget vigtige aspekter af operativsystemet. Dette kan også siges om andre operativsystemer, så i sandhed er d...
Gratis og open source-spilmotorer til udvikling af Linux-spil
Denne artikel dækker en liste over gratis og open source-spilmotorer, der kan bruges til at udvikle 2D- og 3D-spil på Linux. Der er mange sådanne spil...