Foros del Web » Programando para Internet » Python »

popen communicate

Estas en el tema de popen communicate en el foro de Python en Foros del Web. Hola!! Esstoy haciendo un código que me muestra una ventanita al dar en un boton y que me pida mi password y me identifique como ...
  #1 (permalink)  
Antiguo 22/10/2012, 05:49
 
Fecha de Ingreso: abril-2010
Mensajes: 78
Antigüedad: 14 años
Puntos: 0
Pregunta popen communicate

Hola!!

Esstoy haciendo un código que me muestra una ventanita al dar en un boton y que me pida mi password y me identifique como root pero no me funciona bien, me dice que el password no es correcto, entonces solo puede ser que el communicate me lo haga mal

Código:
def sudo():
	
  contra = tkSimpleDialog.askstring(title="Para el sudo", prompt="Password",show="*")
  
  if contra != None:
   print contra
   p = subprocess.Popen(["sudo", "-S", "root"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
   p.communicate(contra)
Ideas? jejeje

Gracias por adelantado!!!
  #2 (permalink)  
Antiguo 22/10/2012, 12:12
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: popen communicate

Puedes usar gksudo en vez de sudo para que te aparecezca una ventana donde poner tu contraseña.

Si por alguna razón necesitas correr todo el script como root entonces puedes usar lo siguiente:

Código Python:
Ver original
  1. import os
  2. user_id = os.geteuid()
  3. if user_id == 0:
  4.     print "Root"
  5. else:
  6.     print "No root"
  #3 (permalink)  
Antiguo 22/10/2012, 12:56
 
Fecha de Ingreso: abril-2010
Mensajes: 78
Antigüedad: 14 años
Puntos: 0
Respuesta: popen communicate

No, lo que necesito es logearme como root para que me deje ejecutar diferentes opciones.

También me han comentado que se puede hacer con algo así:

Código:
echo <password> | sudo -S <comando>
Pero la verdad es que no entiendo como, porque no se que poner en comando, lo único que necesito es logearme como root
  #4 (permalink)  
Antiguo 22/10/2012, 13:05
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: popen communicate

Entonces usa el script que deje en el post anterior.

Código Python:
Ver original
  1. import os
  2. user_id = os.geteuid()
  3. if user_id == 0:
  4.     print "Root"  #Aqui haz todo lo que necesites hacer como root
  5. else:
  6.     print "No root" # Aqui muestra un error que no tiene suficientes privilegios para ejecutar el script.
  #5 (permalink)  
Antiguo 22/10/2012, 13:42
 
Fecha de Ingreso: abril-2010
Mensajes: 78
Antigüedad: 14 años
Puntos: 0
Respuesta: popen communicate

Pero en el codigo que has escrito donde me logeo como root?

Perdona si la pregunta es muy absurda, estoy aprendiendo
  #6 (permalink)  
Antiguo 22/10/2012, 16:52
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: popen communicate

Ok, la cuestión aquí es que te den privilegios para correr tu script. Si no lo hacen simplemente terminas el programa, diciéndole que no tiene suficientes permisos.

Otra cosa es que no se que tratas de hacer, pero no deberías de usar root para ejecutar comandos a menos que sepas muy bien lo que estas haciendo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:10.