Quando se trata de networking, há uma ampla gama de perspectivas e não se pode dominar como interagir com todos os dispositivos no mundo real. No entanto, todos os dispositivos de rede compartilham funcionalidade semelhante que, quando dominada, são automatizáveis.
Como mencionado em meus outros tutoriais, os programadores são preguiçosos e sempre procuram melhorar a eficiência-o que faz o mínimo de trabalho 🙂-e quando se trata de automatizar problemas relacionados à rede, muitos costumam aproveitar a chance.
No guia rápido de hoje, apresentarei automatizando o SSH usando duas bibliotecas Python populares: Paramiko e Netmiko. Criaremos scripts Python simples usando as duas bibliotecas para automatizar o SSH e interagir com dispositivos de rede.
Eu escolho essa abordagem porque um guia focado principalmente nas diferenças entre Paramiko e Netmiko seria muito curto-uma tabela simples seria suficiente e sem concreto. Ao adotar essa abordagem, você poderá experimentar mais com eles e ver qual faz o quê e como.
Vamos começar:
O que é paramiko?
O site oficial define Paramiko da seguinte maneira:
“Paramiko é um python (2.7, 3.4+) Implementação do protocolo SSHV2 que fornece funcionalidade de cliente e servidor.”
Espero que tenha sido claro. Fundação, isso significa Paramiko é uma biblioteca Python para interagir com SSH.
Agora:
Quando queremos fazer login em um servidor, sabemos que vamos ao Terminal-CMD, Xterm, Mobaxterm ou apenas ao Gnome Terminal-Login, depois execute comandos.
Vamos ver como o 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ê deseja construir a partir da fonte, consulte o repositório oficial do Paramiko Github usando o recurso fornecido:
https: // github.com/paramiko/paramiko
Conectando -se ao SSH usando o paramiko
Para conectar-se ao SSH usando o paramiko, usamos o método Connect (), que requer o parâmetro do nome do host-também suporta outros parâmetros, mas como não exigimos isso, podemos ignorá-los por enquanto.
CONNECT (nome do host, porta = 22, nome de usuário = nenhum, senha = nenhum, pkey = nenhum, key_filename = nenhum, timeout = nenhum, allow_agent = true, look_for_keys = true, compact = false, sock = nenhum, gss_auth = false, gss_kex = False, gss_deleg_creds = true, gss_host = nenhum, banner_timeout = nenhum, auth_timeout = nenhum, gss_trust_dns = true, senha = nenhum, desabilaped_algorithms = nenhum)
Usando esta função, que está disponível em paramiko. Cliente.Sshclient.Connect (), se conecta ao nome do host especificado e o autentica. O sistema de destino é verificado contra as chaves do sistema local existentes (confiáveis).
Se você possui um arquivo host específico, pode usar o método load_host_keys () e definir o cliente Paramiko SSH para adicionar qualquer host desconhecido a 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 Connect, podemos ver que temos o nome de usuário e os parâmetros de senha que podemos usar para conectar ao sistema. Considere o código abaixo para conectar o SSH via nome de usuário e senha.
De Paramiko Import Util, Sshclient, AutoaddpolicySe você encontrar problemas ao importar a classe Paramiko SSHCLIENT, consulte a seguinte pergunta StackOverflow:
https: // Stackoverflow.com/questões/29378234/python-import-paramiko-error-cannot-import-name-util
Conectando SSH via chave
Como todos sabemos, conectar o SSH via chave é mais seguro do que usar uma senha bruta. Paramiko sabe disso e permite que você passe o arquivo -chave e se conecte ao sistema de destino.
Considere o código abaixo.
De Paramiko importar sshclient, autoaddpolicyExecutando comandos sobre SSH
Depois de obter acesso ao sistema usando SSH (sobre Paramiko), você pode executar uma série de comandos. Considere o seguinte snippet de código:
de paramiko importar sshclientNeste ponto, você sabe como usar a Biblioteca Paramiko para automatizar o SSH. Como você pode imaginar, este não é um guia abrangente do Paramiko, e não mergulhamos em detalhes relacionados ao que a ferramenta faz. O objetivo era mostrar sua implementação.
Para mais informações, consulte materiais mais abrangentes, como:
https: // docs.Paramiko.org/pt/estável/
https: // github.com/paramiko/paramiko
O que é Netmiko?
O 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 ao dispositivo, levando a atrasos e falhas-você pode verificar os dispositivos suportados na documentação oficial. Também é consideravelmente mais lento que o netmiko.
Paramiko é mais um módulo SSH genérico que você pode usar para automatizar tarefas SSH específicas. Por outro lado, o Netmiko é mais amplo e bem otimizado para gerenciar dispositivos de rede, como interruptores e roteadores.
Abstração é a outra vantagem de usar o netmiko. Netmiko fornece uma função simples que você pode usar para desativar a paginação. Por exemplo, uma saída da sessão SSH pode ser mais de uma página. Usando sessões SSH regulares, você precisará 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 sobre Paramiko são:
Como instalar o netmiko
Instalar o Netmiko também é relativamente fácil:
Tudo o que você precisa fazer é garantir que você tenha o Python e o PIP instalado no seu sistema e execute o comando:
pip install netmiko
python -m pip install netmiko
Conectando -se ao SSH usando Netmiko
Conectar -se às sessões SSH do dispositivo usando o netmiko é muito simples. Lembre -se de que o Netmiko é mais otimizado para dispositivos como roteadores e não SSH genérico.
Considere o trecho de código abaixo.
# Módulos de importaçãoUsando 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 Netmiko comumente usados:
Como mencionado anteriormente, este não é um guia sobre como usar o netmiko, mas uma direção simples do que Netmiko e Paramiko são. Verifique a documentação oficial para obter mais informações.
https: // github.com/ktbyers/netmiko
Conclusão
Neste guia rápido, discutimos como usar o 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 genérico de ssh | 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. |