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, autoaddpolicySe 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, autoaddpolicyEsecuzione 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 sshclientA 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:
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:
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 importazioneUtilizzando 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:
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. |