ejecutar comando que pide password

Jose Jiménez López jjimenezlopez en gmail.com
Mie Jun 3 17:23:28 CEST 2009


Hola, si, como Manuel dice el módulo pexpect está muy bien para estos casos,
te copio un código que utilicé yo hace poco en un script:

scp = pexpect.spawn('scp ' + file_name + ' root en 192.168.2.44:/var/log/app/')
# estableciendo el timeout a 10 segundos
scp.timeout = 10

done = False
retry = 0
# lo intentamos como máximo RETRY veces
while not done:
    try:
        #vemos si nos pide ya la clave...
        scp.expect("root en 192.168.2.44's password:")
    except pexpect.TIMEOUT:
        # timeout, contamos y mostramos mensaje
        retry = retry + 1
        print "[W] [scp-log.py] Timeout, reintentando..."
    else:
        #hecho y seguimos...
        done = True
    if retry >= RETRY and not done:
        # ya se han intentado demasiadas veces...
        print "[E] [scp-logs.py] Timeout 10 veces seguidas, operación
abortada."
        exit(1)

#enviamos la clave...
scp.sendline(PASS)


Como verás es bastante sencillo. Espero que te sea de ayuda.

Saludos.


2009/6/3 Manuel Enrique Gutierrez Perez <megutierrez en estudiantes.uci.cu>

> apt-cache show python-pexpect
>
> Pexpect is a pure Python module for spawning child applications;
> controlling them; and responding
>  to expected patterns in their output. Pexpect works like Don Libes'
> Expect. Pexpect allows your
>  script to spawn a child application and control it as if a human were
> typing commands.
>
>
>
> -----Original Message-----
> From: alex [mailto:alexguancho en gmail.com]
> Sent: Tue 02.06.2009 17:10
> To: Lista de discusión sobre python en castellano
> Subject: Re: [Python-es] ejecutar comando que pide password
>
> Sí, echalé un ojo a Expect para python (pexpect)... eso te debería valer.
>
> Reiniel Gonzalez Martinez escribió:
> > Hola a todos, quisiera saber si existe en Python la forma de que cuando
> se ejecute un comando en un servidor remoto y este me pida algo mandárselo
> para alla, pongo un ejemplo a continuación, yo ejecuto el comando pero no se
> como mandar el pass en este caso, gracias de antemano
> >
> > htpasswd2 -m /var/svn/alfaomega/conf/passwd reiniel
> >
> > New password:
> >
> > _______________________________________________
> > Lista de correo Python-es
> > http://listas.aditel.org/listinfo/python-es
> > FAQ: http://listas.aditel.org/faqpyes
> >
> >
>
>
> --
>
> J.Alejandro Torres
> MSN: alexguancho en hotmail.com
> OTR Fingerprint: 6F97548D F9AC110A F143CE68 C548BF0F 4FA44A8D
> Skype: alexguancho
> Email: alexguancho en gmail.com
> PGP Key: 0xABC873D7 D77B EEBF 6DD3 DC38 03D6 038E CE44 49D4 ABC8
>
>
>
>
> _______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
>



-- 
Jose Jiménez López
jjimenezlopez en gmail.com
www.josejimenez.net
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes


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