interactuar con ssh

Cesar Cardenas Desales cescd en yahoo.com.mx
Lun Jul 17 16:20:46 CEST 2006


Yo he usado exitosamente Paramiko. Te mando los
***fragmentos*** mas importantes de un programa que
hice para conectarme a SFTP. El proceso para ejecutar
comandos en un servidor con SSH es muy semejante:

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

#-------------------------
import base64
import getpass
import os, os.path
import socket
import sys
import traceback
import re

import paramiko


DEFAULT_DOC_NAME = "reservation_confirmation_group"
PATH_TO_LOGS='/usr/local/bea70/user_projects/Dev_Domain/logs'
TODAYS_LOG_NAME='dps_dp_debug.log.2005-10-05'
LOCAL_FOLDER='c:/work/'

hostname = '127.0.0.1'
port = 22
username = 'cesar'
password = 'somepass'

paramiko.util.log_to_file('demo_sftp_dps.log')

def downloadFile(logFileName, localCopy=True):
....# get host key, if we know one
....hostkeytype = None
....hostkey = None
....try:
........host_keys =
paramiko.util.load_host_keys(os.path.expanduser('~/.ssh/known_hosts'))
....except IOError:
........try:
............host_keys =
paramiko.util.load_host_keys(os.path.expanduser('~/ssh/known_hosts'))
........except IOError:
............print '*** Unable to open host keys file'
............host_keys = {}
....
....if host_keys.has_key(hostname):
........hostkeytype = host_keys[hostname].keys()[0]
........hostkey = host_keys[hostname][hostkeytype]
........print 'Using host key of type %s' %
hostkeytype
....
....# now, connect and use paramiko Transport to
negotiate SSH2 across the connection
....try:....
........t = paramiko.Transport((hostname, port))
........t.connect(username=username,
password=password, hostkey=hostkey)
........sftp = paramiko.SFTPClient.from_transport(t)
........
........logname = PATH_TO_LOGS + '/' + logFileName
........
........print 'Copying ', logname
........if localCopy:
............print 'to ', os.path.join(LOCAL_FOLDER,
logFileName)
............data = sftp.get(logname,
os.path.join(LOCAL_FOLDER, logFileName) )
........else:
............data = sftp.open(logname, 'r').read()

........t.close()
........
........return data
....
....except Exception, e:
........print '*** Caught exception: %s: %s' %
(e.__class__, e)
........traceback.print_exc()
........try:
............t.close()
........except:
............pass
........sys.exit(1)


print 'Processing started...'
data = downloadFile(localCopy=True,
logFileName=logName)
print 'Processing done'

#-------------------------



 --- "Pablo Alvarez (IAlvear)" <soporte en ialvear.com>
escribió:

> no se si es la forma mas facil de hacerlo,
> programando algo, o si hay 
> alguna solucion.
> 
> quiero armar un programita en python que cuando se
> de tal situacion, de 
> error o lo que sea, se loguee en una servidor por
> ssh y ejecute un scrip 
> para solucionar el problema.
> 
> alguno me puede recomendar alguna libreria o forma
> de trabajar para 
> lograr esto?
> 
> gracias!
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
> 



	
	
		
___________________________________________________________ 
Do You Yahoo!? 
La mejor conexión a Internet y <b >2GB</b> extra a tu correo por $100 al mes. http://net.yahoo.com.mx 




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