Pitão

Qual é a diferença entre Paramiko e Netmiko?

Qual é a diferença entre Paramiko e Netmiko?

Quando se trata de rede, há uma ampla gama de perspectivas e não se pode dominar como interagir com todos os dispositivos do mundo real. No entanto, todos os dispositivos de rede compartilham funcionalidades semelhantes que, quando dominadas, são automatizadas.

Conforme mencionado em meus outros tutoriais, os programadores são preguiçosos e sempre procuram melhorar a eficiência - fazendo assim o mínimo de trabalho 🙂 -, e quando se trata de automatizar problemas relacionados à rede, muitos muitas vezes aproveitam a chance.

No guia rápido de hoje, apresentarei a você como automatizar o SSH usando duas bibliotecas Python populares: Paramiko e Netmiko. Criaremos scripts python simples usando as duas bibliotecas para automatizar SSH e interagir com dispositivos de rede.

Eu escolhi esta abordagem porque um guia focado principalmente nas diferenças entre Paramiko e Netmiko seria muito curto - uma tabela simples seria suficiente - e não concreto. Ao adotar essa abordagem, você será mais capaz de experimentá-los e ver o que faz o quê e como.

Vamos começar:

O que é Paramiko?

O site oficial define Paramiko da seguinte forma:

“Paramiko é um Python (2.7, 3.4+) implementação do protocolo SSHv2 que fornece funcionalidade de cliente e servidor.”

Espero que tenha ficado claro. Basicamente, isso significa Paramiko é uma biblioteca python para interagir com SSH.

Agora:

Quando queremos fazer login em um servidor, sabemos que vamos para o terminal-cmd, xterm, MobaXterm ou apenas o Terminal-login do Gnome, e então executamos os comandos.

Vamos ver como Paramiko pode ajudar com isso.

Como instalar o Paramiko

Para usar o Paramiko, precisamos instalá-lo. Você deve ter Python - de preferência python 2 - instalado em sua máquina. Usando pip, digite o comando abaixo para instalar o Paramiko.

sudo pip install Paramiko
Python -m pip install paramiko

Se você está procurando construir a partir do código-fonte, consulte o repositório oficial do Paramiko GitHub usando o recurso fornecido:

https: // github.com / paramiko / paramiko

Conectando-se a SSH usando Paramiko

Para se conectar ao SSH usando Paramiko, usamos o método connect (), que requer o parâmetro hostname - ele também suporta outros parâmetros, mas como não os exigimos, podemos ignorá-los por enquanto.

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

Usando esta função, que está disponível no paramiko. Cliente.SSHClient.connect (), conecta-se ao nome de host especificado e o autentica. O sistema de destino é verificado em relação às chaves do sistema local existentes (confiáveis).

Se você tiver um arquivo de host específico, você pode usar o método load_host_keys () e definir o cliente SSH Paramiko para adicionar qualquer host desconhecido ao paramiko.AutoAddPolicy (). Se você estiver usando o cliente em sistemas não confiáveis, evite usar o paramiko.AutoAddPolicy.

Conectando SSH com uma senha

A partir do método de conexão, podemos ver que temos os parâmetros de nome de usuário e senha que podemos usar para conectar ao sistema. Considere o código abaixo para conectar SSH via nome de usuário e senha.

de paramiko import util, SSHClient, AutoAddPolicy
cliente = SSHClient ()
cliente.load_system_host_keys ()
cliente.load_host_keys ("/ home / linuxhint /.ssh / known_hosts ")
cliente.set_missing_host_key_policy (AutoAddPolicy ())
cliente.conectar (hostname = "linuxhint.com ", nome de usuário =" admin ", senha =" AdminPassword ")
cliente.perto()

Se você encontrar problemas ao importar a classe Paramiko SSHClient, consulte a seguinte questão stackoverflow:

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

Conectando SSH via chave

Como todos sabemos, conectar SSH via chave é mais seguro do que usar uma senha bruta. Paramiko sabe disso e permite que você passe o arquivo de chave e se conecte ao sistema de destino.

Considere o código abaixo.

de paramiko import SSHClient
da paramiko AutoAddPolicy
cliente = SSHClient ()
cliente.load_system_host_keys ()
cliente.load_host_keys ('/ home / linuxhint /.ssh / known_hosts ')
cliente.set_missing_host_key_policy (AutoAddPolicy ())
cliente.conectar ('linuxhint.com ', username =' admin ', key_filename =' ssh_key.pem ', passphrase =' AdminPassphrase ')
cliente.perto()

Execução de comandos por SSH

Depois de obter acesso ao sistema usando SSH (via Paramiko), você pode executar uma série de comandos. Considere o seguinte snippet de código:

cliente = SSHClient ()
cliente.load_system_host_keys ()
cliente.conectar ('linuxhint.com ')
stdin, stdout, stderr = cliente.exec_command ('bash ”)
Stdin.perto()
stdout.perto()
stderr.perto()
cliente.perto()

Neste ponto, você sabe como usar a biblioteca Paramiko para automatizar SSH. Como você pode imaginar, este não é um guia completo do Paramiko, e não nos aprofundamos em detalhes relacionados ao que a ferramenta faz. O objetivo era mostrar a você sua implementação.

Para obter mais informações, consulte materiais mais abrangentes, como:

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

O que é Netmiko??

Netmiko é muito popular e semelhante ao Paramiko, com algumas diferenças significativas:

Ao trabalhar em redes do mundo real, você encontrará vários modelos de dispositivos. Assim, você precisa de uma ferramenta confiável que possa ajudá-lo a automatizar o processo. Em alguns casos, você não pode usar o Paramiko devido às limitações de suporte do dispositivo, levando a atrasos e travamentos - você pode verificar os dispositivos suportados na documentação oficial. Também é consideravelmente mais lento do que o Netmiko.

Paramiko é mais um módulo SSH genérico que você pode usar para automatizar tarefas SSH específicas. Em contraste, o Netmiko é mais amplo e bem otimizado para gerenciar dispositivos de rede, como switches e roteadores.

A abstração é a outra vantagem de usar o Netmiko. Netmiko fornece uma função simples que você pode usar para desativar o paging. Por exemplo, uma saída da sessão SSH pode ser mais de uma página. Usando sessões SSH regulares, você terá que adicionar um espaço semelhante a uma entrada para mostrar a próxima página. Netmiko fornece uma maneira de substituir isso.

As vantagens do Netmiko em relação ao Paramiko são:

Como instalar o Netmiko

Instalar o Netmiko também é relativamente fácil:

Tudo o que você precisa fazer é garantir que o Python e o pip estejam instalados em seu sistema e executar o comando:

pip install netmiko
python -m pip install netmiko

Conectando-se a SSH usando Netmiko

Conectar-se a sessões SSH do dispositivo usando Netmiko é muito simples. Lembre-se de que o Netmiko é mais otimizado para dispositivos como roteadores e não SSH genérico.

Considere o snippet de código abaixo.

#import modules
from netmiko import ConnectHandler
# informações do dispositivo em formato de dicionário.
device_config =
“Device_type”: “cisco_ios”,
“Ip”: “192.168.0.1 ”,
“Nome de usuário”: “admin”,
“Senha”: “senha”,
“Segredo”: “senha”

conexão = ConnectHandler (** device_config)

Usando o código simples acima, você terá uma conexão SSH com o dispositivo. Você também pode passar as informações do dispositivo diretamente em vez de passá-las para um dicionário.

Depois de ter uma sessão SSH, você pode executar comandos usando a função send_command (). As funções suportadas pelo netmiko incluem:

Métodos comumente usados ​​de Netmiko:

Como mencionado anteriormente, este não é um guia sobre como usar o Netmiko, mas uma orientação simples do que são Netmiko e Paramiko. Verifique a documentação oficial para mais informações.

https: // github.com / ktbyers / netmiko

Conclusão

Neste guia rápido, discutimos como usar paramiko para conexões SSH genéricas e gerenciamento de dispositivos de rede Netmiko, ilustrando as diferenças entre os dois.

Concluir:

Paramiko Netmiko
Útil para uso ssh genérico Mais útil para configuração de dispositivo de rede.
Suporte limitado para uma ampla gama de dispositivos de rede. Suporta uma ampla gama de dispositivos de rede.
Tutorial de Shadow of the Tomb Raider para Linux
Shadow of the Tomb Raider é a décima segunda adição à série Tomb Raider - uma franquia de jogos de ação e aventura criada pela Eidos Montreal. O jogo ...
Como aumentar o FPS no Linux?
FPS significa Quadros por segundo. A tarefa do FPS é medir a taxa de quadros em reproduções de vídeo ou desempenho de jogos. Em palavras simples, o nú...
Top jogos do Oculus App Lab
Se você é proprietário de um fone de ouvido Oculus, deve estar informado sobre o carregamento lateral. Sideload é o processo de instalação de conteúdo...