Python: Conectar a un servidor SSH

Y seguimos con la racha de artículos sobre Python (sí, me estoy quitando esa espina clavada). Esta vez vamos a ver un ejemplo de cómo enviar comandos a un servidor mediante SSH.

La magia esta vez se consigue gracias a la librería Paramiko. Para instalarla en Ubuntu:

sudo apt-get install python-paramiko

En este ejemplo no hay apenas control de errores, que sería importante añadirlo (eso queda como deberes para el lector 🙂 ).

#!/usr/bin/env python
 
# Librerías necesarias
import paramiko
import os
 
# Datos para la conexión SSH
ssh_servidor = 'midominio.com'
ssh_usuario  = 'usuario'
ssh_clave    = 'clave'
ssh_puerto   = 22 # O el puerto SSH que use nuestro servidor
comando      = 'ls' # el comando que vamos a ejecutar en el servidor
 
# Conectamos al servidor
conexion = paramiko.Transport((ssh_servidor, ssh_puerto))
conexion.connect(username = ssh_usuario, password = ssh_clave)
 
# Abrimos una sesión en el servidor
canal = conexion.open_session()
# Ejecutamos el comando, en este caso un sencillo 'ls' para ver
# el listado de archivos y directorios
canal.exec_command(comando)
 
# Y vamos a ver la salida
salida = canal.makefile('rb', -1).readlines()
if salida:
	# Si ha ido todo bien mostramos el listado de directorios
	print salida
else:
	# Si se ha producido algún error lo mostramos
	print canal.makefile_stderr('rb', -1).readlines()
conexion.close()