Python

Wat is het verschil tussen Paramiko en Netmiko?

Wat is het verschil tussen Paramiko en Netmiko?

Als het gaat om netwerken, is er een breed scala aan perspectieven en kan men niet beheersen hoe te communiceren met alle apparaten in de echte wereld. Alle netwerkapparaten delen echter vergelijkbare functionaliteit die, wanneer ze onder de knie zijn, automatiseerbaar zijn.

Zoals vermeld in mijn andere tutorials, zijn programmeurs lui en altijd op zoek om de efficiëntie te verbeteren - en zo het minste werk te doen 🙂 -, en als het gaat om het automatiseren van netwerkgerelateerde problemen, grijpen velen vaak de kans.

In de beknopte handleiding van vandaag laat ik je kennismaken met het automatiseren van SSH met behulp van twee populaire Python-bibliotheken: Paramiko en Netmiko. We zullen eenvoudige python-scripts maken met behulp van de twee bibliotheken om SSH te automatiseren en te communiceren met netwerkapparaten.

Ik heb voor deze aanpak gekozen omdat een gids die vooral gericht is op de verschillen tussen Paramiko en Netmiko te kort zou zijn - een simpele tabel zou volstaan ​​- en geen beton. Door deze aanpak te volgen, kunt u er beter mee experimenteren en zien welke wat doet en hoe.

Laten we beginnen:

Wat is Paramiko?

De officiële website definieert Paramiko als volgt:

“Paramiko is een Python (2.7, 3.4+) implementatie van het SSHv2-protocol dat zowel client- als serverfunctionaliteit biedt.”

Ik hoop dat het duidelijk was. Fundamenteel betekent het: Paramiko is een python-bibliotheek voor interactie met SSH.

Nu:

Wanneer we willen inloggen op een server, weten we dat we naar de terminal-cmd, xterm, MobaXterm, of alleen de Gnome Terminal-login gaan, en dan commando's uitvoeren.

Laten we eens kijken hoe Paramiko daarbij kan helpen.

Hoe Paramiko te installeren

Om Paramiko te gebruiken, moeten we het installeren. Je zou Python - bij voorkeur python 2 - op je machine moeten hebben geïnstalleerd. Gebruik pip en voer de onderstaande opdracht in om Paramiko . te installeren.

sudo pip installeren Paramiko
Python -m pip install paramiko

Als u vanuit de bron wilt bouwen, raadpleeg dan de officiële Paramiko GitHub-repository met behulp van de meegeleverde bron:

https://github.com/paramiko/paramiko

Verbinding maken met SSH met behulp van Paramiko

Om verbinding te maken met SSH met behulp van Paramiko, gebruiken we de methode connect() waarvoor de parameter hostname nodig is - deze ondersteunt ook andere parameters, maar aangezien we die niet nodig hebben, kunnen we ze voorlopig negeren.

connect(hostname, port=22, gebruikersnaam=Geen, wachtwoord=Geen, pkey=Geen, key_filename=Geen, timeout=Geen, allow_agent=True, look_for_keys=True, compress=False, sock=Geen, gss_auth=False, gss_kex= False, gss_deleg_creds=True, gss_host=Geen, banner_timeout=Geen, auth_timeout=Geen, gss_trust_dns=True, passphrase=Geen, disabled_algorithms=Geen)

Met behulp van deze functie, die beschikbaar is in paramiko. Cliënt.SSHClient.connect(), maakt verbinding met de opgegeven hostnaam en authenticeert deze. Het doelsysteem wordt gecontroleerd aan de hand van de bestaande lokale systeemsleutels (vertrouwd).

Als u een specifiek hostbestand heeft, kunt u de methode load_host_keys() gebruiken en de Paramiko SSH-client instellen om een ​​onbekende host aan paramiko toe te voegen.AutoAddPolicy(). Als u de client in niet-vertrouwde systemen gebruikt, vermijd dan het gebruik van de paramiko.Beleid automatisch toevoegen.

SSH verbinden met een wachtwoord

Uit de verbindingsmethode kunnen we zien dat we de gebruikersnaam en wachtwoordparameters hebben die we kunnen gebruiken om verbinding te maken met het systeem. Overweeg de onderstaande code om SSH te verbinden via gebruikersnaam en wachtwoord.

van paramiko import util, SSHClient, AutoAddPolicy
cliënt = SSHClient()
cliënt.load_system_host_keys()
cliënt.load_host_keys("/home/linuxhint/.ssh/bekende_hosts")
cliënt.set_missing_host_key_policy(AutoAddPolicy())
cliënt.verbinden (hostnaam = "linuxhint".com", gebruikersnaam="admin", wachtwoord="AdminPassword")
cliënt.dichtbij()

Als u problemen ondervindt bij het importeren van de Paramiko SSHClient-klasse, raadpleeg dan de volgende stackoverflow-vraag:

https://stackoverflow.com/questions/29378234/python-import-paramiko-error-cannot-import-name-util

SSH verbinden via sleutel

Zoals we allemaal weten, is het verbinden van SSH via een sleutel veiliger dan het gebruik van een onbewerkt wachtwoord. Paramiko weet dit en stelt u in staat om het sleutelbestand door te geven en verbinding te maken met het doelsysteem.

Overweeg de onderstaande code:.

van paramiko import SSHClient
van paramiko AutoAddPolicy
cliënt = SSHClient()
cliënt.load_system_host_keys()
cliënt.load_host_keys('/home/linuxhint/.ssh/bekende_hosts')
cliënt.set_missing_host_key_policy(AutoAddPolicy())
cliënt.verbinden('linuxhint'.com',gebruikersnaam='admin',key_filename='ssh_key.pem', passphrase='AdminPassphrase')
cliënt.dichtbij()

Opdrachten uitvoeren via SSH

Zodra u toegang krijgt tot het systeem met behulp van SSH (over Paramiko), kunt u een reeks opdrachten uitvoeren. Overweeg het volgende codefragment:

client = SSHClient()
cliënt.load_system_host_keys()
cliënt.verbinden('linuxhint'.com')
stdin, stdout, stderr = client.exec_command('bash')
standaard.dichtbij()
stout.dichtbij()
stderr.dichtbij()
cliënt.dichtbij()

Op dit punt weet je hoe je de Paramiko-bibliotheek moet gebruiken om SSH . te automatiseren. Zoals je je kunt voorstellen, is dit geen uitgebreide Paramiko-gids en duiken we niet in details met betrekking tot wat de tool doet. Het doel was om u de implementatie ervan te laten zien.

Raadpleeg voor meer informatie uitgebreidere materialen zoals:

https://docs.paramiko.org/nl/stal/
https://github.com/paramiko/paramiko

Wat is Netmiko?

Netmiko is erg populair en lijkt op Paramiko met een paar significante verschillen:

Als je aan echte netwerken werkt, kom je verschillende apparaatmodellen tegen. U hebt dus een betrouwbare tool nodig die u kan helpen het proces te automatiseren. In sommige gevallen kunt u Paramiko niet gebruiken vanwege beperkingen van de apparaatondersteuning, wat leidt tot vertragingen en crashes - u kunt de ondersteunde apparaten controleren in de officiële documentatie. Het is ook aanzienlijk langzamer dan Netmiko.

Paramiko is meer een generieke SSH-module die u kunt gebruiken om specifieke SSH-taken te automatiseren. Daarentegen is Netmiko breder en goed geoptimaliseerd voor het beheer van netwerkapparaten zoals switches en routers.

Abstractie is het andere voordeel van het gebruik van Netmiko. Netmiko biedt een eenvoudige functie die u kunt gebruiken om paging uit te schakelen. Een uitvoer van de SSH-sessie kan bijvoorbeeld meer dan één pagina zijn. Als je gewone SSH-sessies gebruikt, moet je een invoerachtige spatie toevoegen om de volgende pagina weer te geven. Netmiko biedt u een manier om dit te negeren.

Voordelen van Netmiko boven Paramiko zijn:

Hoe Netmiko te installeren

Het installeren van Netmiko is ook relatief eenvoudig:

Het enige dat u hoeft te doen, is ervoor zorgen dat Python en pip op uw systeem zijn geïnstalleerd en de opdracht uitvoeren:

pip installeer netmiko
python -m pip installeer netmiko

Verbinding maken met SSH met behulp van Netmiko

Verbinding maken met SSH-sessies op het apparaat met Netmiko is heel eenvoudig. Onthoud dat Netmiko meer is geoptimaliseerd voor apparaten zoals routers en niet voor generieke SSH.

Bekijk het onderstaande codefragment:.

#modules importeren
van netmiko import ConnectHandler
# apparaatinfo in woordenboekformaat.
device_config =
"apparaattype": "cisco_ios",
“ip”: “192.168.0.1”,
“gebruikersnaam”: “admin”,
"wachtwoord": "wachtwoord",
"geheim": "wachtwoord"

verbinding = ConnectHandler(**device_config)

Met behulp van de eenvoudige code hierboven heb je een SSH-verbinding met het apparaat. U kunt de apparaatinformatie ook rechtstreeks doorgeven in plaats van deze door te geven aan een woordenboek.

Zodra je een SSH-sessie hebt, kun je opdrachten uitvoeren met de functie send_command()). Functies die door netmiko worden ondersteund, zijn onder meer:

Veelgebruikte methoden van Netmiko:

Zoals eerder vermeld, is dit geen handleiding voor het gebruik van Netmiko, maar een eenvoudige richting van wat Netmiko en Paramiko zijn. Raadpleeg de officiële documentatie voor meer informatie.

https://github.com/ktbyers/netmiko

Conclusie

In deze beknopte handleiding hebben we besproken hoe u paramiko kunt gebruiken voor generieke SSH-verbindingen en Netmiko-netwerkapparaatbeheer, waarbij we de verschillen tussen de twee illustreren.

Concluderen:

Paramiko Netmiko
Nuttig voor generiek ssh-gebruik Meest nuttig voor configuratie van netwerkapparaten.
Beperkte ondersteuning voor een breed scala aan netwerkapparaten. Ondersteunt een breed scala aan netwerkapparaten.
OSD-overlay tonen in Linux-apps en -games op volledig scherm
Het spelen van games op volledig scherm of het gebruik van apps in de modus volledig scherm zonder afleiding kan u afsnijden van relevante systeeminfo...
Top 5 Game Capture-kaarten
We hebben allemaal gezien en genoten van streaming gameplays op YouTube. PewDiePie, Jakesepticye en Markiplier zijn slechts enkele van de beste gamers...
Hoe een spel op Linux te ontwikkelen
Tien jaar geleden zouden niet veel Linux-gebruikers voorspellen dat hun favoriete besturingssysteem ooit een populair spelplatform voor commerciële vi...