[Python-es] Conexion a SSH a multiples maquinas

Angel Claudio Alvarez angel en angel-alvarez.com.ar
Mar Oct 26 01:39:48 CEST 2010


El dom, 24-10-2010 a las 09:23 -0430, Alvaro Manrique escribió:
> 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.
> 
> 
Si lo que queres es conectrte a la maquina1 y desde la maquina1
conectarte a la maquina2 deberiass mirar pexpect
Si lo que queres es conectarte simultaneamente a las maquinas1 y 2 desde
tu maquina utiliza multiprocessing


> 
> 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/
> >>
> >>
> >
> 




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