elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Python (Moderador: Danielㅤ)
| | |-+  [Python] Introducir la contraseña de un usario desde el propio script
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Python] Introducir la contraseña de un usario desde el propio script  (Leído 8,780 veces)
SrCooper

Desconectado Desconectado

Mensajes: 137


Bazinga!


Ver Perfil
[Python] Introducir la contraseña de un usario desde el propio script
« en: 21 Abril 2014, 21:19 pm »

Buenos días a todos, estoy creando un pequeño programa en python que recorre una lista con usuarios y ejecuta el comando para abrir firefox en cada uno de ellos.

El código es el siguiente:

Código
  1. #!/usr/bin/python
  2.  
  3. import os
  4.  
  5. lista_usuarios = ['pepe', 'mario', 'jorge']
  6. lista_contrasenas = ['fosil', 'matrix', 'maria']
  7.  
  8. for user in lista_usuarios:
  9.    os.system("su " + user + " '-c firefox'")

El problema es que la ejecución del script se va deteniendo para preguntarme la contraseña y esto es algo que no quiero. Me gustaría poder introducir la contraseña directamente desde el script, sabiendo que están todas guardadas en otra lista.

Un saludo y muchas gracias de antemano


En línea

Noxware

Desconectado Desconectado

Mensajes: 195



Ver Perfil
Re: [Python] Introducir la contraseña de un usario desde el propio script
« Respuesta #1 en: 22 Abril 2014, 21:48 pm »

hola, soy nuevo en python y mas que nada nuevo en linux, segun lo que veo lo que te pide es contraseña root, no??? para empezar no creo que necesites ser root para esa tarea, quizas usando "sudo" en vez de "su" seria mejor... segundo, como linux es muy estricto con la seguridad si mal investigue tienes que editar cierto archivo del sistema para que no te pida la contraseña, osea permitirle ejecutarse ya con esos permisos... ya tratastes de hacerlo sin ser root??? osea ejecutar el comando asi nomas??? si necesitas root o sudo investiga lo que te dije... si no lo necesitas solo quitalo n.n


En línea

"La mejor forma de conocer a una persona es viendo su código... o en una partida de ajedrez...

PD: Si no tengo faltas de ortografía es porque use el autocorrector."
daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: [Python] Introducir la contraseña de un usario desde el propio script
« Respuesta #2 en: 22 Abril 2014, 22:18 pm »

con su no se pero puedes usar sudo?
Código
  1. echo <password> | sudo -u root -S echo hola
En línea

buenas
SrCooper

Desconectado Desconectado

Mensajes: 137


Bazinga!


Ver Perfil
Re: [Python] Introducir la contraseña de un usario desde el propio script
« Respuesta #3 en: 23 Abril 2014, 17:03 pm »

hola, soy nuevo en python y mas que nada nuevo en linux, segun lo que veo lo que te pide es contraseña root, no??? para empezar no creo que necesites ser root para esa tarea, quizas usando "sudo" en vez de "su" seria mejor... segundo, como linux es muy estricto con la seguridad si mal investigue tienes que editar cierto archivo del sistema para que no te pida la contraseña, osea permitirle ejecutarse ya con esos permisos... ya tratastes de hacerlo sin ser root??? osea ejecutar el comando asi nomas??? si necesitas root o sudo investiga lo que te dije... si no lo necesitas solo quitalo n.n

Creo que no me has entendido  :xD El problema no es que pida la contraseña para ejecutar esa tarea, la pide para cambiar de usuario a través de python, y lo que yo me preguntaba es si existe algún modo de escribir esta contraseña directamente desde python.

Si ejecutas este script comprobarás que la ejecución se va deteniendo para preguntarte la contraseña del usuario al que estás intentado cambiar, algo que resulta engorroso, pues son muchos usuarios y me gustaría poder introducir las contraseñas automáticamente.

Es evidente que utilizar permisos de administrador para ejecutar el script funcionaría sin problemas, y sin ni siquiera contraseñas, pero no es eso lo que estoy intentado.

con su no se pero puedes usar sudo?
Código
  1. echo <password> | sudo -u root -S echo hola

No se muy bien a que te refieres... Si te refieres a cambiar al ususario root y desde ahí cambiar a los demás usuarios (para lo cual no harían falta ni sus contraseñas) no es exactamente lo que estoy intentado, sino cambiar a cada usuario de forma individual.

Un saludo y gracias por todo  ;D
En línea

daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: [Python] Introducir la contraseña de un usario desde el propio script
« Respuesta #4 en: 24 Abril 2014, 00:05 am »

jeje creo que no me exprese muy bien .  :'(  :-(



me refiero a que asi puedes pones el password sin hacer ninguna pausa. donde puse:

Código
  1. echo password
aca pones la clave del usuario asi no necesitas preguntarla posteriormente

Código
  1. |
asi se pasa la clave al siguiente comando

Código
  1. sudo -S
supongo ya sabes que hace sudo, el parametro -S permite recibir la contraseña del comando anterior


Código
  1. -u root
se cambia a el usuario en el que deseas ejecutar

Código
  1. echo hola
el comando a ejecutar

por ejemplo si quiero ejecutar un comando siendo mi contraseña 123 un ejemplo y mi usuario es daryo
Código
  1. echo 123 | sudo -u daryo -S echo hola


« Última modificación: 24 Abril 2014, 00:27 am por daryo » En línea

buenas
SrCooper

Desconectado Desconectado

Mensajes: 137


Bazinga!


Ver Perfil
Re: [Python] Introducir la contraseña de un usario desde el propio script
« Respuesta #5 en: 24 Abril 2014, 20:54 pm »

Ahh vale ya entiendo  ;D

He probado lo que dices y funciona perfectamente, salvo que necesito ejecutarlo como root y eso es algo que no puedo hacer. ¿Existe alguna otra forma que no requiera privilegios de administrador?

Un saludo y muchas gracias

PD: he leido algo sobre usar el comando su -c y leer la contraseña por stdin, pero la verdad no tengo ni idea de lo que significa  :xD
« Última modificación: 24 Abril 2014, 20:56 pm por SrCooper » En línea

daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: [Python] Introducir la contraseña de un usario desde el propio script
« Respuesta #6 en: 24 Abril 2014, 23:07 pm »

Citar
PD: he leido algo sobre usar el comando su -c y leer la contraseña por stdin, pero la verdad no tengo ni idea de lo que significa

que se puede ejecutar un comando  por ejemplo :) , asi si solo es un comando no hace falta abrir la terminal y eso
Código:
su -c "ls"

con respecto a la duda la verdad no soy experto en programacion unix pero googleare un poco n_n

una alternativa programada en python y creo que es lo que buscas puede ser.()
http://stackoverflow.com/questions/13825689/running-a-process-as-a-different-user-from-python

Citar
salvo que necesito ejecutarlo como root y eso es algo que no puedo hacer
no necesariamente xD , el comando sudo se puede configurar para limitar los permisos en configurando el archivo sudoers
http://linuxgnublog.org/configurar-sudo-en-debian
http://www.linuxtotal.com.mx/?cont=info_admon_014

suerte
En línea

buenas
SrCooper

Desconectado Desconectado

Mensajes: 137


Bazinga!


Ver Perfil
Re: [Python] Introducir la contraseña de un usario desde el propio script
« Respuesta #7 en: 27 Abril 2014, 14:20 pm »

Pero yo no soy el administrador de la máquina, y por tanto no puedo modificar el archivo sudoers.

Y en cuanto a los links que pusiste me parecieron un poco complicados de entender, apenas llevo dos semanas programando en python  :xD

Un saludo y gracias por todo
En línea

daryo


Desconectado Desconectado

Mensajes: 1.070



Ver Perfil WWW
Re: [Python] Introducir la contraseña de un usario desde el propio script
« Respuesta #8 en: 27 Abril 2014, 16:00 pm »

encontre una solucion simple:

bajas este modulo http://www.noah.org/wiki/pexpect

Código
  1. wget http://pexpect.sourceforge.net/pexpect-2.3.tar.gz
  2. tar xzf pexpect-2.3.tar.gz
  3. cd pexpect-2.3
  4. sudo python ./setup.py install

luego el codigo quedaria asi

Código
  1. #!/usr/bin/env python
  2. import pexpect
  3. child = pexpect.spawn ('su usuario -c firefox')
  4. child.expect ('Password: ') # busca esta cadena para continuar
  5. child.sendline ('miclave') # aca la contraseña de usuario

 ;D
« Última modificación: 27 Abril 2014, 16:31 pm por daryo » En línea

buenas
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines