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.