SSH usando Python

Manav Narula 30 janeiro 2023
  1. Use a biblioteca paramiko em Python para criar conexões SSH e executar comandos
  2. Use o módulo subprocess para criar conexões SSH e executar comandos
SSH usando Python

SSH (significa Secure Socket Shell) é um protocolo de rede altamente usado para serviços de comunicação criptografados seguros em uma rede desconhecida e insegura. Ele nos permite enviar comandos entre dois dispositivos em uma rede remotamente e tem muitos aplicativos.

Python possui módulos disponíveis que permitem tal execução SSH. Este tutorial irá discutir como executar comandos shell para um dispositivo remoto após proteger a conexão SSH.

Use a biblioteca paramiko em Python para criar conexões SSH e executar comandos

O módulo paramiko é freqüentemente usado para implementar protocolos SSH em Python. Ele permite a comunicação do lado do servidor e do cliente.

Verifique o código abaixo para executar comandos shell em um dispositivo remoto usando este módulo.

ssh = paramiko.SSHClient()
ssh.connect(server, username=username, password=password)
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(cmd_to_execute)

A função SSHClient() especifica uma sessão de servidor SSH. Conectamos ao dispositivo usando os detalhes de autenticação adequados na função conectar. Os comandos necessários podem ser executados neste dispositivo usando a função exec_command().

Outro módulo chamado spur é derivado deste módulo, mas tem uma interface um pouco melhor.

Use o módulo subprocess para criar conexões SSH e executar comandos

A função check_output() do módulo subprocess pode ser usada para executar comandos passados ​​a ele, e a função retorna a saída desse comando. Podemos criar conexões SSH sem senha com esta função para executar os comandos necessários.

O código a seguir mostra um exemplo disso.

subprocess.check_output(["ssh", "my_server", "echo /*/"])

Outro método que pode ser usado a partir deste módulo é o Popen(). É semelhante à função os.Popen() do módulo os para executar comandos e programas externos. Neste módulo, o Popen é uma classe e não um método. É um pouco complicado usar isso devido a vários parâmetros que precisam ser especificados junto com o comando necessário. Ele combina todas as 4 funções os.Popen() em uma. Ele também executa o comando como um processo separado. Podemos usá-lo para criar conexões SSH e executar comandos, conforme mostrado abaixo.

subprocess.Popen(
    "ssh {user}@{host} {cmd}".format(user=user, host=host, cmd="ls -l"),
    shell=True,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
).communicate()
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn