[Python-es] Conexion a SSH a multiples maquinas

Alvaro Manrique sanreikaj.foros en gmail.com
Dom Oct 24 15:53:15 CEST 2010


Buenos Dias,

   Igual como los compañeros no he hecho conexiones ssh, pero viendo
tu codigo y la intension que tienes, se me ocurre que lo que debes
hacer es una ves conectado a la maquina 1 puedes por los mismos
comandos ssh colocar el programa en esa maquina, y desde la misma
sesion ejecutarlo para que se conecte a la 2, de esa manera estarias
usando la maquina 1 como puente, que es lo que entiendo de tu idea,
con este planteamiento lo que veo es que tienes que ver como enviarle
los comandos al programa ejecutandose en la maquina 1 y como recuperar
los resultados.

   Seria algo como un cliente servidor, el servidor es el que se va a
ejecutar en la maquina 1 y el cliente seria el de tu maquina, el
servidor recibe tus comandos y te los devuelve, los cuales el cliente
tiene que interpretar.

   Espero te sirva de ayuda.  Saludos.



El 23/10/10, Daniel Sarmiento <dsarmientos en gmail.com> escribió:
> 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/
>>
>>
>

-- 
Enviado desde mi dispositivo móvil


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