Foros del Web » Programando para Internet » Python »

Operaciones por consola desde una interfaz grafica en python

Estas en el tema de Operaciones por consola desde una interfaz grafica en python en el foro de Python en Foros del Web. Tengo un problemita que ni siquiera se que titulo poner en esta entrada, resulta ser que hice una pequeña aplicación gráfica con wxPython la cual ...
  #1 (permalink)  
Antiguo 23/10/2011, 13:16
Avatar de wilmermorel  
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 2
Pregunta Operaciones por consola desde una interfaz grafica en python

Tengo un problemita que ni siquiera se que titulo poner en esta entrada, resulta ser que hice una pequeña aplicación gráfica con wxPython la cual ejecuta comandos por consola con el modulo os, pero necesito que todas las entradas se hagan por interfaz grafica.... me explico mejor:
Al intentar realizar una operación como superusuario, hago esto: os.system('sudo '+comando) pero lógicamente me pide la entrada de contraseña, por consola... estoy totalmente perdido en este asunto que no se ni como explicarlo, pero se que tiene solución.

El sigte. código, elimina el directorio previamente seleccionado mediante un DirDialog.
Lo que necesito es, ingresar la contraseña desde un TextEntryDialog e incluirla junto al comando o algo parecido en siendo que todo funcione correctamente.

Código Python:
Ver original
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import wx
  5. import os
  6.  
  7. class MyFrame(wx.Frame):
  8.     def __init__(self):
  9.         wx.Frame.__init__(self, None, -1, "Ventana")
  10.         self.button_1 = wx.Button(self, -1, "Abrir")
  11.  
  12.         self.__Prop()
  13.         self.__Layout()
  14.         self.Bind(wx.EVT_BUTTON, self.Abrir, self.button_1)
  15.  
  16.     def __Prop(self):
  17.         self.SetTitle("Temas by Wilmer")
  18.  
  19.     def __Layout(self):
  20.         sizer1 = wx.BoxSizer(wx.VERTICAL)
  21.         sizer1.Add(self.button_1, 0, wx.ALL, 10)
  22.         self.SetSizer(sizer1)
  23.  
  24.     def Abrir(self, event):
  25.         dialogo = wx.DirDialog(self)
  26.         a = dialogo.ShowModal()
  27.         if a == wx.ID_OK:
  28.             ruta = dialogo.GetPath()
  29.             os.system('sudo rm -r '+ruta) #EL PROBLEMA ES ESTE
  30.             print("carpeta eliminada")
  31.  
  32.         event.Skip()
  33.  
  34. if __name__ == '__main__':
  35.     app = wx.PySimpleApp(0)
  36.     wx.InitAllImageHandlers()
  37.     frame = MyFrame()
  38.     app.SetTopWindow(frame)
  39.     frame.Show()
  40.     app.MainLoop()

Que me pidan cambiar el titulo a esta entrada, no estaría nada mal

Última edición por razpeitia; 23/10/2011 a las 15:35
  #2 (permalink)  
Antiguo 23/10/2011, 14:49
 
Fecha de Ingreso: septiembre-2010
Mensajes: 525
Antigüedad: 14 años, 2 meses
Puntos: 59
Utiliza gksudo (kdesudo en KDE) en lugar de sudo.

__________________
01011111 01000001 01100100 01110010 01101001 01100001 01101110 01011111

Última edición por _Adrian_; 23/10/2011 a las 14:58
  #3 (permalink)  
Antiguo 23/10/2011, 15:35
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Operaciones por consola desde una interfaz grafica en python

No creo que sea una buena idea eliminar algo con privilegios de administrador o root.

Simplemente elimina, si no se puede reportale al usuario que no tiene suficientes privilegios.
  #4 (permalink)  
Antiguo 24/10/2011, 09:43
Avatar de wilmermorel  
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 2
Respuesta: Operaciones por consola desde una interfaz grafica en python

En realidad no estoy pensando en eliminar nada, el código fue solo un ejemplo. Lo que estoy tramando es crear un código para instalar temas en el nuevo Ubuntu11.10, ya que este no posee una herramienta para tal cometido. El gksudo me será muy útil por el momento. Gracias!.
  #5 (permalink)  
Antiguo 24/10/2011, 10:14
 
Fecha de Ingreso: enero-2010
Ubicación: Madrid/España
Mensajes: 89
Antigüedad: 14 años, 11 meses
Puntos: 3
Respuesta: Operaciones por consola desde una interfaz grafica en python

Recuerdo que existía algo llamado dbus para conseguir privilegios
  #6 (permalink)  
Antiguo 24/10/2011, 12:33
 
Fecha de Ingreso: septiembre-2010
Mensajes: 525
Antigüedad: 14 años, 2 meses
Puntos: 59
Dbus creo que es para la comunicación entre programas, no para conseguir privilegios, ¿no?

Hay otro programa para conseguir privilegios, PolicyKit.

__________________
01011111 01000001 01100100 01110010 01101001 01100001 01101110 01011111
  #7 (permalink)  
Antiguo 24/10/2011, 19:52
Avatar de wilmermorel  
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 2
De acuerdo Respuesta: Operaciones por consola desde una interfaz grafica en python

Bueno al principio gksudo me pareció algo incomodo se puede decir, ya que, se bloqueaba la pantalla con un fondo negro y un pequeño dialogo para introducir la contraseña, pero luego he logrado configurarlo tal, al llamarlo, que es exactamente lo ideal para lo que necesito, de modo que se muestra un pequeño dialogo encima de mi aplicación con descripción y un mensaje que puedo manipular a mi gusto:

gksudo -u root -g -D 'Instalacion de Temas' -m 'Ingrese su clave de Administrador' [COMANDO])

-u = usuario
-g = es precisamente para mostrarlo como si fuera un dialogo (no bloquea la pantalla)
-D = descripción
-m = mensaje

Hay mas opciones, pero estas son suficientes para mi, creo que es una útil herramienta.

Etiquetas: comandos, consola, terminal, wxpython
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 08:11.