Pytonorm

Vad är skillnaden mellan Paramiko och Netmiko?

Vad är skillnaden mellan Paramiko och Netmiko?

När det gäller nätverk finns det ett brett spektrum av perspektiv, och man kan inte behärska hur man interagerar med alla enheter i den verkliga världen. Alla nätverksenheter delar dock liknande funktioner som, när de behärskas, är automatiska.

Som nämnts i mina andra handledning är programmerare lata och vill alltid förbättra effektiviteten - och därmed göra minst arbete 🙂 - och när det gäller automatisering av nätverksrelaterade problem hoppar många ofta på chansen.

I dagens snabbguide presenterar jag dig för att automatisera SSH med två populära Python-bibliotek: Paramiko och Netmiko. Vi kommer att skapa enkla python-skript med de två biblioteken för att automatisera SSH och interagera med nätverksenheter.

Jag väljer detta tillvägagångssätt eftersom en guide som främst fokuserar på skillnaderna mellan Paramiko och Netmiko skulle vara för kort - en enkel tabell skulle räcka och inte konkret. Genom att använda detta tillvägagångssätt kan du bättre experimentera med dem och se vilka som gör vad och hur.

Låt oss börja:

Vad är Paramiko?

Den officiella webbplatsen definierar Paramiko enligt följande:

“Paramiko är en Python (2.7, 3.4+) implementering av SSHv2-protokollet som ger både klient- och serverfunktionalitet.”

Jag hoppas att det var klart. Grundläggande betyder det Paramiko är ett pythonbibliotek för interaktion med SSH.

Nu:

När vi vill logga in på en server vet vi att vi går till terminal-cmd, xterm, MobaXterm eller bara Gnome Terminal-inloggningen och sedan kör kommandon.

Låt oss se hur Paramiko kan hjälpa till med det.

Hur man installerar Paramiko

För att använda Paramiko måste vi installera det. Du bör ha Python - helst python 2 - installerat på din dator. Använd pip för att ange kommandot nedan för att installera Paramiko.

sudo pip installera Paramiko
Python -m pip installera paramiko

Om du vill bygga från källan hänvisar du till det officiella Paramiko GitHub-förvaret med den angivna resursen:

https: // github.com / paramiko / paramiko

Ansluter till SSH med Paramiko

För att ansluta till SSH med Paramiko använder vi metoden connect (), som kräver parametern för värdnamn - den stöder också andra parametrar, men eftersom vi inte behöver dem kan vi ignorera dem för tillfället.

connect (värdnamn, port = 22, användarnamn = Ingen, lösenord = Ingen, pkey = Ingen, key_filename = None, timeout = None, allow_agent = True, look_for_keys = True, compress = False, sock = None, gss_auth = False, gss_kex = Falskt, gss_deleg_creds = True, gss_host = None, banner_timeout = None, auth_timeout = None, gss_trust_dns = True, passphrase = None, disabled_algorithms = None)

Med den här funktionen, som är tillgänglig i paramiko. Klient.SSHClient.connect (), ansluter till det angivna värdnamnet och autentiserar det. Målsystemet kontrolleras mot befintliga lokala systemnycklar (betrodda).

Om du har en specifik värdfil kan du använda metoden load_host_keys () och ställa in Paramiko SSH-klienten för att lägga till en okänd värd till paramiko.AutoAddPolicy (). Om du använder klienten i opålitliga system, undvik att använda paramiko.AutoAddPolicy.

Ansluta SSH med ett lösenord

Från anslutningsmetoden kan vi se att vi har användarnamn och lösenordsparametrar som vi kan använda för att ansluta till systemet. Tänk på koden nedan för att ansluta SSH via användarnamn och lösenord.

från paramiko import util, SSHClient, AutoAddPolicy
klient = SSHClient ()
klient.load_system_host_keys ()
klient.load_host_keys ("/ home / linuxhint /.ssh / kända_hostar ")
klient.set_missing_host_key_policy (AutoAddPolicy ())
klient.anslut (värdnamn = "linuxhint.com ", användarnamn =" admin ", lösenord =" AdminPassword ")
klient.stänga()

Om du stöter på problem när du importerar Paramiko SSHClient-klassen, se följande stackoverflow-fråga:

https: // stackoverflow.com / frågor / 29378234 / python-import-paramiko-fel-kan inte importera namn-util

Ansluter SSH via nyckel

Som vi alla vet är anslutning av SSH via nyckel säkrare än att använda ett rå lösenord. Paramiko vet detta och låter dig skicka nyckelfilen och ansluta till målsystemet.

Tänk på koden nedan.

från paramiko import SSHClient
från paramiko AutoAddPolicy
klient = SSHClient ()
klient.load_system_host_keys ()
klient.load_host_keys ('/ home / linuxhint /.ssh / kända_hostar ')
klient.set_missing_host_key_policy (AutoAddPolicy ())
klient.anslut ('linuxhint.com ', användarnamn =' admin ', key_filename =' ssh_key.pem ', lösenfras =' AdminPassphrase ')
klient.stänga()

Köra kommandon över SSH

När du väl har fått tillgång till systemet med SSH (över Paramiko) kan du utföra en serie kommandon. Tänk på följande kodavsnitt:

klient = SSHClient ()
klient.load_system_host_keys ()
klient.anslut ('linuxhint.com ')
stdin, stdout, stderr = klient.exec_command ('bash')
stdin.stänga()
stdout.stänga()
stderr.stänga()
klient.stänga()

Vid den här tiden vet du hur du använder Paramiko-biblioteket för att automatisera SSH. Som ni kan föreställa er detta inte en omfattande Paramiko-guide, och vi dyker inte in i detaljer relaterade till vad verktyget gör. Målet var att visa dig dess genomförande.

Mer information finns i mer omfattande material som:

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

Vad är Netmiko?

Netmiko är mycket populär och liknar Paramiko med några signifikanta skillnader:

När du arbetar på verkliga nätverk kommer du att stöta på olika enhetsmodeller. Därför behöver du ett pålitligt verktyg som kan hjälpa dig att automatisera processen. I vissa fall kan du inte använda Paramiko på grund av begränsningar för enhetsstöd, vilket leder till förseningar och kraschar - du kan kontrollera de enheter som stöds i den officiella dokumentationen. Det är också betydligt långsammare än Netmiko.

Paramiko är mer av en generisk SSH-modul som du kan använda för att automatisera specifika SSH-uppgifter. Däremot är Netmiko bredare och väl optimerad för hantering av nätverksenheter som switchar och routrar.

Abstraktion är den andra fördelen med att använda Netmiko. Netmiko erbjuder en enkel funktion som du kan använda för att inaktivera personsökning. Till exempel kan en utdata från SSH-sessionen vara mer än en sida. Med hjälp av vanliga SSH-sessioner måste du lägga till ett inmatningsliknande utrymme för att visa nästa sida. Netmiko ger dig ett sätt att åsidosätta detta.

Fördelarna med Netmiko framför Paramiko är:

Hur man installerar Netmiko

Att installera Netmiko är också relativt enkelt:

Allt du behöver göra är att se till att du har Python och pip installerat på ditt system och kör kommandot:

pip installera netmiko
python -m pip installera netmiko

Ansluter till SSH med Netmiko

Anslutning till enhetens SSH-sessioner med Netmiko är väldigt enkelt. Kom ihåg att Netmiko är mer optimerad för enheter som routrar och inte generiska SSH.

Tänk på kodavsnittet nedan.

#importmoduler
från netmiko import ConnectHandler
# enhetsinformation i ordboksformat.
device_config =
“Device_type”: “cisco_ios”,
“Ip”: “192.168.0.1 ”,
“Användarnamn”: “admin”,
“Lösenord”: “lösenord”,
“Hemlig”: “lösenord”

anslutning = ConnectHandler (** device_config)

Med den enkla koden ovan har du en SSH-anslutning till enheten. Du kan också skicka enhetsinformationen direkt istället för att skicka den till en ordlista.

När du har en SSH-session kan du köra kommandon med funktionen send_command (). Funktioner som stöds av netmiko inkluderar:

Vanliga metoder för Netmiko:

Som nämnts tidigare är detta inte en guide för hur man använder Netmiko utan en enkel riktning på vad Netmiko och Paramiko är. Mer information finns i den officiella dokumentationen.

https: // github.com / ktbyers / netmiko

Slutsats

I den här snabbguiden diskuterade vi hur man använder paramiko för generiska SSH-anslutningar och Netmiko nätverksenhetshantering, vilket illustrerar skillnaderna mellan de två.

Avslutningsvis:

Paramiko Netmiko
Användbar för generisk ssh-användning Mest användbart för konfiguration av nätverksenheter.
Begränsat stöd för ett stort antal nätverksenheter. Stöder ett brett utbud av nätverksenheter.
Mus Mellan musknappen fungerar inte i Windows 10
Mellan musknappen fungerar inte i Windows 10
De mittknappen hjälper dig att bläddra igenom långa webbsidor och skärmar med mycket data. Om det slutar, kommer du sluta använda tangentbordet för at...
Mus Hur man ändrar vänster och höger musknapp på Windows 10 PC
Hur man ändrar vänster och höger musknapp på Windows 10 PC
Det är en hel norm att alla datormusenheter är ergonomiskt utformade för högerhänta användare. Men det finns musenheter tillgängliga som är speciellt ...
Mus Emulera musklick genom att sväva med Clickless Mouse i Windows 10
Emulera musklick genom att sväva med Clickless Mouse i Windows 10
Att använda en mus eller tangentbord i fel hållning av överdriven användning kan resultera i många hälsoproblem, inklusive stam, karpaltunnelsyndrom o...