Saltar al contenido

¿Cuál es la forma más sencilla de SSH usando Python?

Te doy la bienvenida a proyecto on line, ahora hallarás la respuesta de lo que andabas buscando.

Solución:

Puede codificarlo usted mismo usando Paramiko, como se sugirió anteriormente. Alternativamente, puede buscar en Fabric, una aplicación de Python para hacer todas las cosas que preguntó:

Fabric es una biblioteca de Python y una herramienta de línea de comandos diseñada para optimizar la implementación de aplicaciones o la realización de tareas de administración del sistema a través del protocolo SSH. Proporciona herramientas para ejecutar comandos de shell arbitrarios (ya sea como un usuario de inicio de sesión normal o mediante sudo), cargar y descargar archivos, etc.

Creo que esto se adapta a tus necesidades. Tampoco es una biblioteca grande y no requiere instalación de servidor, aunque tiene dependencias en paramiko y pycrypt que requieren instalación en el cliente.

La aplicación solía estar aquí. Ahora se puede encontrar aquí.

* The official, canonical repository is git.fabfile.org
* The official Github mirror is GitHub/bitprophet/fabric

Hay varios artículos buenos al respecto, aunque debe tener cuidado porque ha cambiado en los últimos seis meses:

Implementar Django con Fabric

Herramientas del moderno Python Hacker: Virtualenv, Fabric y Pip

Implementación simple y fácil con Fabric y Virtualenv


Más tarde: Fabric ya no requiere paramiko para instalar:

$ pip install fabric
Downloading/unpacking fabric
  Downloading Fabric-1.4.2.tar.gz (182Kb): 182Kb downloaded
  Running setup.py egg_info for package fabric
    warning: no previously-included files matching '*' found under directory 'docs/_build'
    warning: no files found matching 'fabfile.py'
Downloading/unpacking ssh>=1.7.14 (from fabric)
  Downloading ssh-1.7.14.tar.gz (794Kb): 794Kb downloaded
  Running setup.py egg_info for package ssh
Downloading/unpacking pycrypto>=2.1,!=2.4 (from ssh>=1.7.14->fabric)
  Downloading pycrypto-2.6.tar.gz (443Kb): 443Kb downloaded
  Running setup.py egg_info for package pycrypto
Installing collected packages: fabric, ssh, pycrypto
  Running setup.py install for fabric
    warning: no previously-included files matching '*' found under directory 'docs/_build'
    warning: no files found matching 'fabfile.py'
    Installing fab script to /home/hbrown/.virtualenvs/fabric-test/bin
  Running setup.py install for ssh
  Running setup.py install for pycrypto
...
Successfully installed fabric ssh pycrypto
Cleaning up...

Sin embargo, esto es principalmente cosmético: ssh es una bifurcación de paramiko, el responsable de ambas bibliotecas es el mismo (Jeff Forcier, también autor de Fabric), y el responsable de mantenimiento tiene planes de reunir paramiko y ssh con el nombre de paramiko. (Esta corrección a través de pbanka).

No lo he probado, pero este módulo pysftp podría ayudar, que a su vez usa paramiko. Creo que todo está del lado del cliente.

El comando interesante es probablemente .execute() que ejecuta un comando arbitrario en la máquina remota. (El módulo también incluye .get() y .put métodos que aluden más a su carácter FTP).

ACTUALIZAR:

Reescribí la respuesta después de que la publicación de blog a la que originalmente vinculé ya no está disponible. Algunos de los comentarios que se refieren a la versión anterior de esta respuesta ahora se verán extraños.

Si desea evitar módulos adicionales, puede utilizar el módulo de subproceso para ejecutar

ssh [host] [command]

y capturar la salida.

Prueba algo como:

process = subprocess.Popen("ssh example.com ls", shell=True,
    stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output,stderr = process.communicate()
status = process.poll()
print output

Para tratar con nombres de usuario y contraseñas, puede usar subproceso para interactuar con el proceso ssh, o puede instalar un key en el servidor para evitar la solicitud de contraseña.

Te mostramos reseñas y puntuaciones

Si para ti ha resultado provechoso este artículo, te agradeceríamos que lo compartas con el resto seniors de esta forma contrubuyes a difundir nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *