Qual è la differenza tra paramiko e netmiko?

Qual è la differenza tra paramiko e netmiko?

Quando si tratta di networking, esiste una vasta gamma di prospettive e non si può padroneggiare come interagire con tutti i dispositivi nel mondo reale. Tuttavia, tutti i dispositivi di networking condividono funzionalità simili che, se padroneggiate, sono automatizzabili.

Come menzionato negli altri miei tutorial, i programmatori sono pigri e cercano sempre di migliorare l'efficienza, quindi facendo il minimo lavoro 🙂-e quando si tratta di automatizzare i problemi relativi alla rete, molti spesso saltano al caso il caso.

Nella guida rapida di oggi, ti presenterò l'automazione di SSH utilizzando due popolari librerie Python: Paramiko E Netmiko. Creeremo semplici script Python utilizzando le due librerie per automatizzare SSH e interagire con i dispositivi di rete.

Scelgo questo approccio perché una guida focalizzata principalmente sulle differenze tra paramiko e netmiko sarebbe una tabella troppo breve, una tabella semplice sarebbe sufficiente. Adottando questo approccio, sarai meglio in grado di sperimentare con loro e vedere cosa fa cosa e come.

Iniziamo:

Cos'è paramiko?

Il sito ufficiale definisce Papiko come segue:

“Paramiko è un Python (2.7, 3.4+) Implementazione del protocollo SSHV2 che fornisce funzionalità sia client che server."

Spero che sia stato chiaro. Fondamentalmente, significa Paramiko è una libreria Python per interagire con SSH.

Ora:

Quando vogliamo accedere a un server, sappiamo che andiamo al terminale-cmd, a xterm, al mobaxterm o solo al login del terminale GNOME, quindi eseguiamo i comandi.

Vediamo come paramiko può aiutare con questo.

Come installare paramiko

Per usare Paramiko, dobbiamo installarlo. Dovresti avere Python - preferibilmente Python 2 - installato sulla macchina. Utilizzando PIP, immettere il comando seguente per installare paramiko.

sudo pip installa paramiko
Python -m Pip Installa paramiko

Se stai cercando di costruire dalla fonte, consultare il repository ufficiale di paramiko github utilizzando la risorsa fornita:

https: // github.com/paramiko/paramiko

Collegamento a SSH usando paramiko

Per connettersi a SSH usando paramiko, utilizziamo il metodo Connect (), che richiede il parametro host-nome, supporta anche altri parametri, ma dal momento che non ne richiediamo, possiamo ignorarli per ora.

connect (hostname, port = 22, username = nessuno, password = nessuno, pKey = nessuno, key_fileName = none, timeout = nessuno, abilit_agent = true, look_for_keys = true, comprime = false, sock = Nessuno, gss_auth = false, gss_kex = False, gss_deleg_creds = true, gss_host = nessuno, banner_timeout = none, autentica

Utilizzando questa funzione, disponibile in paramiko. Cliente.Sshclient.connect (), si collega al nome host specificato e lo autentica. Il sistema di destinazione viene controllato contro le chiavi del sistema locale esistenti (fidati).

Se si dispone di un file host specifico, è possibile utilizzare il metodo load_host_keys () e impostare il client paramiko ssh per aggiungere qualsiasi host sconosciuto a paramiko.AutoADDPolicy (). Se si utilizza il client in sistemi non attendibili, evita di utilizzare il paramiko.AutoADDPolicy.

Collegamento di SSH con una password

Dal metodo Connect, possiamo vedere che abbiamo i parametri del nome utente e della password che possiamo utilizzare per connetterci al sistema. Considera il codice seguente per collegare SSH tramite nome utente e password.

da paramiko import util, sshclient, autoaddpolicy
client = sshclient ()
cliente.load_system_host_keys ()
cliente.load_host_keys ("/home/linuxhint/.ssh/know_hosts ")
cliente.set_missing_host_key_policy (autoaddpolicy ())
cliente.connect (hostname = "linuxhint.com ", username =" admin ", password =" adminpassword ")
cliente.vicino()

Se si riscontrano problemi durante l'importazione della classe Paramiko Sshclient, consultare la seguente domanda di StackOverflow:

https: // stackoverflow.com/Domande/29378234/Python-Import-Paramiko-Error-Cannot-Import-Name-Util

Collegamento di SSH tramite chiave

Come tutti sappiamo, la connessione SSH tramite il tasto è più sicuro rispetto all'utilizzo di una password grezza. Paramiko lo sa e consente di passare il file chiave e connettersi al sistema di destinazione.

Considera il codice seguente.

da paramiko import sshclient, autoaddpolicy
client = sshclient ()
cliente.load_system_host_keys ()
cliente.load_host_keys ('/home/linuxhint/.ssh/noto_hosts ')
cliente.set_missing_host_key_policy (autoaddpolicy ())
cliente.Connect ('LinuxHint.com ', username =' admin ', key_filename =' ssh_key.PEM ', passphrase =' adminpassphrase ')
cliente.vicino()

Esecuzione dei comandi su SSH

Una volta ottenuto l'accesso al sistema utilizzando SSH (su Paramiko), è possibile eseguire una serie di comandi. Considera il seguente frammento di codice:

da paramiko import sshclient
client = sshclient ()
cliente.load_system_host_keys ()
cliente.Connect ('LinuxHint.com ')
stdin, stdout, stderr = client.Exec_Command ('Bash')
stdin.vicino()
stdout.vicino()
Stderr.vicino()
cliente.vicino()

A questo punto, sai come utilizzare la libreria Paramiko per automatizzare SSH. Come puoi immaginare, questa non è una guida completa del paramiko e non ci immergiamo nei dettagli relativi a ciò che fa lo strumento. L'obiettivo era mostrarti la sua implementazione.

Per ulteriori informazioni, consultare materiali più completi come:

https: // docs.paramiko.org/en/stabile/
https: // github.com/paramiko/paramiko

Cos'è Netmiko?

Netmiko è molto popolare e simile a paramiko con alcune differenze significative:

  • Supporto dispositivo
  • Prestazione

Quando lavori su reti del mondo reale, ti imbatterai in vari modelli di dispositivi. Pertanto, hai bisogno di uno strumento affidabile che possa aiutarti a automatizzare il processo. In alcuni casi, non è possibile utilizzare Paramiko a causa delle limitazioni di supporto del dispositivo, portando a ritardi e crash-tu puoi controllare i dispositivi supportati sulla documentazione ufficiale. È anche considerevolmente più lento di Netmiko.

Paramiko è più un modulo SSH generico che puoi utilizzare per automatizzare le attività SSH specifiche. Al contrario, Netmiko è più ampio e ben ottimizzato per la gestione di dispositivi di rete come switch e router.

L'astrazione è l'altro vantaggio dell'utilizzo di Netmiko. Netmiko fornisce una semplice funzione che puoi utilizzare per disabilitare il paging. Ad esempio, un output della sessione SSH potrebbe essere più di una pagina. Utilizzando regolari sessioni SSH, dovrai aggiungere uno spazio simile a input per mostrare la pagina successiva. Netmiko ti fornisce un modo per prevalere.

I vantaggi di NetMiko su Papiko sono:

  • Connettersi automaticamente tramite SSH ai dispositivi di rete.
  • Fornisce un'esecuzione più semplice dei comandi degli spettacoli e dell'output dei dati.
  • Fornisce funzionalità più semplici per i comandi di configurazione, comprese le azioni di commit.
  • Supporto multi-dispositivo su fornitori e piattaforme di dispositivi di rete.

Come installare netmiko

Anche l'installazione di Netmiko è relativamente semplice:

Tutto quello che devi fare è assicurarti di avere Python e Pip installati sul tuo sistema ed eseguire il comando:

PIP Installa Netmiko
Python -m Pip Installa Netmiko

Connessione a SSH utilizzando Netmiko

La connessione alle sessioni SSH del dispositivo utilizzando netmiko è molto semplice. Ricorda che Netmiko è più ottimizzato per dispositivi come router e non ssh generico.

Considera lo snippet di codice di seguito.

# Moduli di importazione
da Netmiko Import Connecthandler
# INFO del dispositivo in formato del dizionario.
dispositivo_config = "dispositivo_type": "cisco_ios",
"IP": "192.168.0.1 ",
"Nome utente": "Admin",
"Password": "Password",
"segreto": "password"

Connection = connectHandler (** dispositivo_config)

Utilizzando il codice semplice sopra, avrai una connessione SSH al dispositivo. Puoi anche passare le informazioni sul dispositivo direttamente invece di passarle a un dizionario.

Una volta che hai una sessione SSH, è possibile eseguire comandi utilizzando la funzione Send_Command (). Le funzioni supportate da Netmiko includono:

Netmiko Metodi comunemente usati:

  • net_connect.Send_Command () - Questa funzioni invia comandi un canale di rete e output di restituzione in base al modello.
  • net_connect.Send_command_timing () - restituisce l'output in base ai tempi da un comando inviato un canale di rete.
  • net_connect.Send_Config_set () - Applica le impostazioni di configurazione ai dispositivi remoti.
  • net_connect.Send_Config_From_File () - Applica le impostazioni di configurazione da un file esterno
  • net_connect.Save_config () - Esporta e salva la configurazione in esecuzione come configurazione di avvio.
  • net_connect.abilita () - query il dispositivo per attivare la modalità abilita.
  • net_connect.find_prompt () - restituire il prompt del router corrente
  • net_connect.commit () - esegue comandi commessi su dispositivi come Juniper e iOS -XR
  • net_connect.disconnect () - termina le sessioni
  • net_connect.write_channel () - Abilita la scrittura a basso livello
  • net_connect.read_channel () - Abilita lettura di basso livello.

Come accennato in precedenza, questa non è una guida su come utilizzare Netmiko ma una semplice direzione di ciò che netmiko e paramiko sono. Controlla la documentazione ufficiale per ulteriori informazioni.

https: // github.com/ktbyers/netmiko

Conclusione

In questa guida rapida, abbiamo discusso di come utilizzare Paramiko per le connessioni SSH generiche e la gestione dei dispositivi di rete Netmiko, illustrando le differenze tra i due.

Concludere:

Paramiko Netmiko
Utile per l'uso ssh generico Più utile per la configurazione del dispositivo di rete.
Supporto limitato per una vasta gamma di dispositivi di rete. Supporta una vasta gamma di dispositivi di rete.