Pitone

Qual è la differenza tra Paramiko e Netmiko??

Qual è la differenza tra Paramiko e Netmiko??

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

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

Nella guida rapida di oggi, ti presenterò all'automazione di SSH utilizzando due famose 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 troppo corta - basterebbe una semplice tabella - e non c'è cemento. Adottando questo approccio, sarai in grado di sperimentarli meglio e vedere cosa fa cosa e come.

Iniziamo:

Cos'è Paramiko?

Il sito ufficiale definisce Paramiko come segue:

“Paramiko è un pitone (2.7, 3.4+) implementazione del protocollo SSHv2 che fornisce funzionalità sia client che server."

spero di essere stato chiaro. Fondamentalmente, significa Paramiko è una libreria Python per interagire con SSH.

Adesso:

Quando vogliamo accedere a un server, sappiamo che andiamo su terminal-cmd, xterm, MobaXterm o solo su Gnome Terminal-login, quindi eseguiamo i comandi.

Vediamo come Paramiko può aiutare in questo.

Come installare Paramiko

Per usare Paramiko, dobbiamo installarlo. Dovresti avere Python - preferibilmente python 2 - installato sulla tua macchina. Usando pip, inserisci il comando seguente per installare Paramiko.

sudo pip install Paramiko
Python -m pip install paramiko

Se stai cercando di creare dal sorgente, fai riferimento al repository GitHub ufficiale di Paramiko utilizzando la risorsa fornita:

https://github.com/paramiko/paramiko

Connessione a SSH utilizzando Paramiko

Per connetterci a SSH usando Paramiko, usiamo il metodo connect(), che richiede il parametro hostname: supporta anche altri parametri, ma poiché non li richiediamo, per ora possiamo ignorarli.

connect(hostname, port=22, username=Nessuno, password=Nessuno, pkey=None, key_filename=Nessuno, timeout=Nessuno, allow_agent=True, look_for_keys=True, compress=False, sock=None, gss_auth=False, gss_kex= False, gss_deleg_creds=True, gss_host=Nessuno, banner_timeout=Nessuno, auth_timeout=Nessuno, gss_trust_dns=True, passphrase=Nessuno, disabled_algorithms=Nessuno)

Utilizzando questa funzione, disponibile in paramiko. Cliente.SSHclient.connect(), si connette al nome host specificato e lo autentica. Il sistema di destinazione viene confrontato con le chiavi di sistema locali esistenti (attendibili).

Se hai un file host specifico, puoi utilizzare il metodo load_host_keys() e impostare il client SSH Paramiko per aggiungere qualsiasi host sconosciuto a paramiko.Criterio di aggiunta automatica(). Se stai utilizzando il client in sistemi non attendibili, evita di utilizzare il paramiko.Criterio di aggiunta automatica.

Connessione di SSH con una password

Dal metodo connect, possiamo vedere che abbiamo i parametri username e password che possiamo usare per connetterci al sistema. Considera il codice seguente per connettere 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/host_noti")
cliente.set_missing_host_key_policy(AutoAddPolicy())
cliente.connect(hostname="linuxhint.it", username="admin", password="AdminPassword")
cliente.vicino()

Se riscontri problemi durante l'importazione della classe Paramiko SSHClient, fai riferimento alla seguente domanda di stackoverflow:

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

Connessione SSH tramite chiave

Come tutti sappiamo, connettere SSH tramite chiave è più sicuro rispetto all'utilizzo di una password non elaborata. Paramiko lo sa e ti permette di passare il file chiave e connetterti al sistema di destinazione.

Considera il codice qui sotto.

da paramiko import SSHClient
da paramiko AutoAddPolicy
client = SSHClient()
cliente.load_system_host_keys()
cliente.load_host_keys('/home/linuxhint/.ssh/host_noti')
cliente.set_missing_host_key_policy(AutoAddPolicy())
cliente.connect('linuxhint.com',username='admin',key_filename='ssh_key.pem', passphrase='AdminPassphrase')
cliente.vicino()

Esecuzione di comandi su SSH

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

client = SSHClient()
cliente.load_system_host_keys()
cliente.connect('linuxhint.com')
stdin, stdout, stderr = client.exec_command('bash")
standard.vicino()
stdout.vicino()
stderr.vicino()
cliente.vicino()

A questo punto, sai come usare la libreria Paramiko per automatizzare SSH. Come puoi immaginare, questa non è una guida Paramiko completa e non ci addentriamo nei dettagli relativi a ciò che fa lo strumento. L'obiettivo era quello di mostrarvi la sua implementazione.

Per ulteriori informazioni, fare riferimento a materiali più completi come:

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

Cos'è Netmiko??

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

Quando lavori su reti reali, ti imbatterai in vari modelli di dispositivi. Pertanto, hai bisogno di uno strumento affidabile che possa aiutarti ad automatizzare il processo. In alcuni casi, non è possibile utilizzare Paramiko a causa di limitazioni del supporto del dispositivo, con conseguenti ritardi e arresti anomali: è possibile controllare i dispositivi supportati sulla documentazione ufficiale. È anche notevolmente più lento di Netmiko.

Paramiko è più un modulo SSH generico che puoi utilizzare per automatizzare 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 usare per disabilitare il paging. Ad esempio, un output della sessione SSH potrebbe essere più di una pagina. Usando sessioni SSH regolari, dovrai aggiungere uno spazio simile a un input per mostrare la pagina successiva. Netmiko ti offre un modo per ignorare questo.

I vantaggi di Netmiko rispetto a Paramiko sono:

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 install netmiko
python -m pip install netmiko

Connessione a SSH tramite Netmiko

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

Considera lo snippet di codice qui sotto.

#importare moduli
da netmiko import ConnectHandler
# informazioni sul dispositivo in formato dizionario.
device_config =
“tipo_dispositivo”: “cisco_ios”,
“ip”: “192.168.0.1",
“nome utente”: “admin”,
“password”: “password”,
“segreto”: “password”

connessione = ConnectHandler(**device_config)

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

Una volta che hai una sessione SSH, puoi eseguire comandi usando la funzione send_command()(). Le funzioni supportate da netmiko includono:

Metodi comunemente usati da Netmiko:

Come accennato in precedenza, questa non è una guida su come utilizzare Netmiko ma una semplice direzione su cosa sono Netmiko e Paramiko. Controlla la documentazione ufficiale per maggiori informazioni.

https://github.com/ktbyers/netmiko

Conclusione

In questa guida rapida, abbiamo discusso 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 generico di ssh Molto utile per la configurazione del dispositivo di rete.
Supporto limitato per un'ampia gamma di dispositivi di rete. Supporta un'ampia gamma di dispositivi di rete.
Tutorial OpenTTD
OpenTTD è uno dei giochi di simulazione aziendale più popolari in circolazione. In questo gioco, devi creare una meravigliosa attività di trasporto. T...
SuperTuxKart per Linux
SuperTuxKart è un fantastico titolo progettato per offrirti l'esperienza di Mario Kart gratuitamente sul tuo sistema Linux. È piuttosto impegnativo e ...
Tutorial Battaglia per Wesnoth
The Battle for Wesnoth è uno dei giochi di strategia open source più popolari a cui puoi giocare in questo momento. Non solo questo gioco è in svilupp...