[Python-es] Conexion a SSH a multiples maquinas

Daniel Sarmiento dsarmientos en gmail.com
Dom Oct 24 01:36:00 CEST 2010


Yo he utilzado paramiko para realizar conexion SSH en Python.

http://www.lag.net/paramiko/

Se puede aprender bastante de los ejemplos que vienen con la libreria .

Espero que sirva,

Daniel
2010/10/23 Rarok <rarokillo en gmail.com>

> Nunca he trabajado con conexiones ssh en python y tengo el python muy
> flojo, pero me parece que para hacer varias conexiones a la vez tendrías que
> ejecutar varios hilos/procesos o como se llamen para mantener varias
> conexiones ssh a la vez.
>
> El 24 de octubre de 2010 01:17, Alberto Curro <bertothunder en gmail.com>escribió:
>
>  2010/10/24 Manuel Enrique González Ramírez <maengora en gmail.com>
>>
>> Hola a tod en s.
>>>
>>> Quisiera saber si me pueden colaborar con lo siguiente:
>>>
>>> Debo conectarme a una máquina mediante ssh (ya eso está listo) y teniendo
>>> la session activa de esta máquina conectarme a otra.  Me logro conectar a la
>>> primera máquina pero al modificar el código para que se conecte a la
>>> siguiente no ocurre nada pero el sistema tampoco me arroja error; podría ser
>>> problema de comunicación/red o debo corregir algo en el código.
>>>
>>
>> No estoy puesto en la parte de conexiones SSH desde python, pero juraría
>> que eso no funcionará.
>>
>> A riesgo de meter la pata, diría que una vez tienes el flujo (la conexión)
>> establecido con la máquina 1, no puedes conectar a la máquina dos desde la
>> máquina 1 usando tu aplicación original (con su conexión). Puedes ejecutar
>> comandos (como un ssh), pero no establecer conexiones dependientes. No sé si
>> me explico.
>>
>> Lo dicho, puedo estar completamente equivocado, pero me parece que el
>> error está en el concepto. Espero que alguien te pueda echar una mano más
>> técnica...
>>
>> Saludos
>>
>>
>>>
>>> Mi otra consulta es:  conocen otra librería como la de paramiko pero que
>>> funcione con Python 2.7??
>>>
>>>
>>> #!/usr/bin/env python
>>> # -*- coding: iso-8859-1 -*-
>>>
>>> # Importo las librerías
>>> import paramiko
>>> import os
>>>
>>> # Datos para la conexión
>>> ssh_servidor = 'maquiina1'
>>> ssh_usuario  = 'usuario'
>>> ssh_clave    = '123456'
>>> ssh_puerto   = 22
>>> comando      = 'ls'
>>>
>>> ssh_servidor2 = 'maquina2'
>>> ssh_usuario2  = 'usuario2'
>>> ssh_clave2    = '56789'
>>> ssh_puerto2   = 22
>>> comando2      = 'ls /opt/archivos/'
>>>
>>> # Conectamos con el servidor
>>> conecta =  paramiko.Transport((ssh_servidor,ssh_puerto))
>>> conecta.connect(username=ssh_usuario, password = ssh_clave)
>>>
>>> # Abrimos una sesión en el servidor
>>> canal = conecta.open_session()
>>>
>>> # Ejecuto el comando de prueba
>>> # Debe mostrar los archivos
>>> canal.exec_command(comando)
>>>
>>> # Salida
>>> salida = canal.makefile('rb',-1).readlines()
>>> if salida:
>>>    print 'Conectado a MAQUINA 1'
>>>    print 'Intentando conectar a MAQUINA 2'
>>>    conecta2 =  paramiko.Transport((ssh_servidor2,ssh_puerto2))
>>>    conecta2.connect(username=ssh_usuario2, password = ssh_clave2)
>>>    canal2 = conecta2.open_session()
>>>    canal2.exec_command(comando2)
>>>    salida2 = canal.makefile('rb',-1).readlines()
>>>    if salida2:
>>>       for i in salida2:
>>>           print i[:-1]
>>>    else:
>>>       print canal2.makefile_stderr('rb',-1).readlines()
>>> else:
>>>    # Mostramos el error
>>>    print canal.makefile_stderr('rb',-1).readlines()
>>> conecta2.close()
>>> conecta.close()
>>>
>>>
>>> De antemano, gracias por la colaboración
>>>
>>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20101023/422deaa9/attachment.html>


Más información sobre la lista de distribución Python-es