Piton

Care este diferența dintre Paramiko și Netmiko?

Care este diferența dintre Paramiko și Netmiko?

Când vine vorba de rețea, există o gamă largă de perspective și nu se poate stăpâni cum să interacționați cu toate dispozitivele din lumea reală. Cu toate acestea, toate dispozitivele de rețea au funcționalități similare care, atunci când sunt stăpânite, sunt automatizabile.

Așa cum am menționat în celelalte tutoriale ale mele, programatorii sunt leneși și caută întotdeauna să îmbunătățească eficiența - făcând astfel cea mai mică treabă 🙂 - și, atunci când vine vorba de automatizarea problemelor legate de rețea, mulți aduc adesea șansa.

În ghidul rapid de astăzi, vă voi prezenta automatizarea SSH utilizând două biblioteci Python populare: Paramiko și Netmiko. Vom crea scripturi python simple folosind cele două biblioteci pentru a automatiza SSH și a interacționa cu dispozitivele de rețea.

Aleg această abordare, deoarece un ghid axat în principal pe diferențele dintre Paramiko și Netmiko ar fi prea scurt - ar fi suficient un simplu tabel - și fără concretizare. Dacă adoptați această abordare, veți putea experimenta mai bine cu ei și veți vedea care face ce și cum.

Să începem:

Ce este Paramiko?

Site-ul oficial definește Paramiko după cum urmează:

„Paramiko este un Python (2.7, 3.4+) implementarea protocolului SSHv2 care oferă atât funcționalitatea clientului, cât și serverul.”

Sper că a fost clar. În mod fundamental, înseamnă Paramiko este o bibliotecă python pentru interacțiunea cu SSH.

Acum:

Când vrem să ne conectăm la un server, știm că mergem la terminal-cmd, xterm, MobaXterm sau doar la Gnome Terminal-login, apoi executăm comenzi.

Să vedem cum poate ajuta Paramiko în acest sens.

Cum se instalează Paramiko

Pentru a utiliza Paramiko, trebuie să-l instalăm. Ar trebui să aveți Python - de preferință python 2 - instalat pe computer. Folosind pip, introduceți comanda de mai jos pentru a instala Paramiko.

sudo pip instala Paramiko
Python -m pip instalează paramiko

Dacă doriți să construiți de la sursă, consultați depozitul oficial Paramiko GitHub folosind resursa furnizată:

https: // github.com / paramiko / paramiko

Conectarea la SSH utilizând Paramiko

Pentru a ne conecta la SSH folosind Paramiko, folosim metoda connect (), care necesită parametrul hostname - acceptă și alți parametri, dar din moment ce nu avem nevoie de aceștia, îi putem ignora deocamdată.

conectare (nume gazdă, port = 22, nume utilizator = Niciuna, parolă = Niciuna, pkey = Niciuna, key_filename = Niciuna, timeout = Niciuna, allow_agent = Adevărat, look_for_keys = Adevărat, comprimare = False, șosete = Niciuna, gss_auth = Falsa, gss_kex = Fals, gss_deleg_creds = Adevărat, gss_host = Niciunul, banner_timeout = Niciunul, auth_timeout = Niciunul, gss_trust_dns = Adevărat, expresie de trecere = Niciunul, disabled_algorithms = Niciunul)

Folosind această funcție, care este disponibilă în paramiko. Client.SSHClient.connect (), se conectează la numele de gazdă specificat și îl autentifică. Sistemul țintă este verificat cu cheile de sistem locale existente (de încredere).

Dacă aveți un anumit fișier gazdă, puteți utiliza metoda load_host_keys () și puteți seta clientul Paramiko SSH pentru a adăuga orice gazdă necunoscută la paramiko.AutoAddPolicy (). Dacă utilizați clientul în sisteme de încredere, evitați să utilizați paramiko.AutoAddPolicy.

Conectarea SSH cu o parolă

Din metoda de conectare, putem vedea că avem parametrii de nume de utilizator și parolă pe care îi putem folosi pentru a ne conecta la sistem. Luați în considerare codul de mai jos pentru a vă conecta SSH prin nume de utilizator și parolă.

din parametri import util, SSHClient, AutoAddPolicy
client = SSHClient ()
client.load_system_host_keys ()
client.load_host_keys ("/ acasă / linuxhint /.ssh / cunoscute_hosts ")
client.set_missing_host_key_policy (AutoAddPolicy ())
client.connect (hostname = "linuxhint.com ", nume de utilizator =" administrator ", parolă =" AdminPassword ")
client.închide()

Dacă întâmpinați probleme la importul clasei Paramiko SSHClient, consultați următoarea întrebare de flux de stivă:

https: // stackoverflow.com / questions / 29378234 / python-import-paramiko-error-can't-import-name-util

Conectarea SSH prin cheie

După cum știm cu toții, conectarea SSH prin cheie este mai sigură decât utilizarea unei parole brute. Paramiko știe acest lucru și vă permite să treceți fișierul cheie și să vă conectați la sistemul țintă.

Luați în considerare codul de mai jos.

din paramiko import SSHClient
de la paramiko AutoAddPolicy
client = SSHClient ()
client.load_system_host_keys ()
client.load_host_keys ('/ home / linuxhint /.ssh / cunoscut_hosts ')
client.set_missing_host_key_policy (AutoAddPolicy ())
client.connect ('linuxhint.com ', username =' admin ', key_filename =' ssh_key.pem ', passphrase =' AdminPassphrase ')
client.închide()

Executarea comenzilor peste SSH

Odată ce obțineți acces la sistem folosind SSH (peste Paramiko), puteți executa o serie de comenzi. Luați în considerare următorul fragment de cod:

client = SSHClient ()
client.load_system_host_keys ()
client.connect ('linuxhint.com ')
stdin, stdout, stderr = client.comanda_exec ('bash ”)
stdin.închide()
stdout.închide()
stderr.închide()
client.închide()

În acest moment, știți cum să utilizați biblioteca Paramiko pentru a automatiza SSH. După cum vă puteți imagina, acesta nu este un ghid cuprinzător Paramiko și nu ne adâncim în detalii legate de ceea ce face instrumentul. Scopul a fost să vă arăt implementarea acestuia.

Pentru mai multe informații, vă rugăm să consultați materiale mai cuprinzătoare, cum ar fi:

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

Ce este Netmiko?

Netmiko este foarte popular și similar cu Paramiko, cu câteva diferențe semnificative:

Când lucrați pe rețele din lumea reală, veți întâlni diverse modele de dispozitive. Astfel, aveți nevoie de un instrument de încredere care vă poate ajuta să automatizați procesul. În unele cazuri, nu puteți utiliza Paramiko din cauza limitărilor suportului dispozitivului, ceea ce duce la întârzieri și blocări - puteți verifica dispozitivele acceptate în documentația oficială. De asemenea, este considerabil mai lent decât Netmiko.

Paramiko este mai mult un modul SSH generic pe care îl puteți utiliza pentru a automatiza sarcini SSH specifice. În schimb, Netmiko este mai larg și bine optimizat pentru gestionarea dispozitivelor de rețea, cum ar fi switch-urile și routerele.

Abstracția este celălalt avantaj al utilizării Netmiko. Netmiko oferă o funcție simplă pe care o puteți utiliza pentru a dezactiva paginarea. De exemplu, o ieșire din sesiunea SSH ar putea fi mai mult de o pagină. Folosind sesiuni SSH obișnuite, va trebui să adăugați un spațiu de intrare pentru a afișa pagina următoare. Netmiko vă oferă o modalitate de a suprascrie acest lucru.

Avantajele Netmiko față de Paramiko sunt:

Cum se instalează Netmiko

Instalarea Netmiko este, de asemenea, relativ ușoară:

Tot ce trebuie să faceți este să vă asigurați că aveți Python și pip instalate pe sistemul dvs. și să executați comanda:

pip instalează netmiko
python -m pip instalează netmiko

Conectarea la SSH folosind Netmiko

Conectarea la sesiunile SSH ale dispozitivului folosind Netmiko este foarte simplă. Amintiți-vă că Netmiko este mai optimizat pentru dispozitive precum routere și nu SSH generic.

Luați în considerare fragmentul de cod de mai jos.

#module de import
din netmiko import ConnectHandler
# informații despre dispozitiv în format dicționar.
device_config =
„Device_type”: „cisco_ios”,
„Ip”: „192.168.0.1 ”,
„Nume de utilizator”: „administrator”,
„Parolă”: „parolă”,
„Secret”: „parolă”

connection = ConnectHandler (** device_config)

Folosind codul simplu de mai sus, veți avea o conexiune SSH la dispozitiv. De asemenea, puteți transmite direct informațiile dispozitivului în loc să le transmiteți către un dicționar.

După ce aveți o sesiune SSH, puteți executa comenzi utilizând funcția send_command (). Funcțiile acceptate de netmiko includ:

Metode Netmiko utilizate în mod obișnuit:

Așa cum am menționat anterior, acesta nu este un ghid despre cum să utilizați Netmiko, ci o direcție simplă a ceea ce sunt Netmiko și Paramiko. Consultați documentația oficială pentru mai multe informații.

https: // github.com / ktbyers / netmiko

Concluzie

În acest ghid rapid, am discutat despre modul de utilizare a paramiko pentru conexiuni SSH generice și gestionarea dispozitivelor de rețea Netmiko, ilustrând diferențele dintre cele două.

A concluziona:

Paramiko Netmiko
Util pentru utilizarea generică ssh Cele mai utile pentru configurarea dispozitivelor de rețea.
Suport limitat pentru o gamă largă de dispozitive de rețea. Suportă o gamă largă de dispozitive de rețea.
Cum se arată FPS Counter în jocurile Linux
Jocurile cu Linux au primit un impuls major când Valve a anunțat suportul Linux pentru clientul Steam și jocurile acestora în 2012. De atunci, multe j...
How to download and Play Sid Meier's Civilization VI on Linux
Introduction to the game Civilization 6 is a modern take on the classic concept introduced in the series of the Age of Empires games. The idea was fai...
How to Install and Play Doom on Linux
Introduction to Doom The Doom Series originated in the 90s after the release of the original Doom. It was an instant hit and from that time onwards th...