SSH usando Python

Manav Narula 30 enero 2023
  1. Utilice la biblioteca paramiko en Python para crear conexiones SSH y ejecutar comandos
  2. Utilice el módulo subprocess para crear conexiones SSH y ejecutar comandos
SSH usando Python

SSH (siglas de Secure Socket Shell) es un protocolo de red muy utilizado para servicios de comunicación seguros y cifrados en una red desconocida e insegura. Nos permite enviar comandos entre dos dispositivos a través de dicha red de forma remota y tiene muchas aplicaciones.

Python tiene módulos disponibles que permiten dicha ejecución SSH. Este tutorial discutirá cómo ejecutar comandos de shell en un dispositivo remoto después de asegurar la conexión SSH.

Utilice la biblioteca paramiko en Python para crear conexiones SSH y ejecutar comandos

El módulo paramiko se utiliza con frecuencia para implementar protocolos SSH en Python. Permite la comunicación tanto del lado del servidor como del cliente.

Verifique el código a continuación para ejecutar comandos de shell en un 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)

La función SSHClient() especifica una sesión de servidor SSH. Nos conectamos al dispositivo utilizando los datos de autenticación adecuados en la función connect. Los comandos requeridos se pueden ejecutar en este dispositivo usando la función exec_command().

Otro módulo llamado spur se deriva de este módulo, pero tiene una interfaz ligeramente mejor.

Utilice el módulo subprocess para crear conexiones SSH y ejecutar comandos

La función check_output() del módulo subprocess se puede utilizar para ejecutar los comandos que se le pasan, y la función devuelve la salida de este comando. Podemos crear conexiones SSH sin contraseña con esta función para ejecutar los comandos requeridos.

El siguiente código muestra un ejemplo de esto.

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

Otro método que se puede utilizar desde este módulo es el Popen(). Es similar a la función os.Popen() del módulo os para ejecutar comandos y programas externos. En este módulo, el Popen es una clase y no un método. Es un poco complicado usar esto debido a varios parámetros que deben especificarse junto con el comando requerido. Combina las 4 funciones os.Popen() en una. También ejecuta el comando como un proceso separado. Podemos usarlo para crear conexiones SSH y ejecutar comandos, como se muestra a continuación.

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