Estou usando o Linux Mint.
Eu escrevi um script python que é projetado para não ser acessível para o usuário padrão logado, mas ainda é executado enquanto eles estiverem conectados. É para executá-los e desconectá-los se um determinado campo estiver configurado em um mysql. banco de dados e mostrar uma caixa de diálogo dizendo "você está sendo desconectado blah".
Se eu executar o script python como o usuário padrão, tudo estará bem e eles serão desconectados.
Se eu executar o script python como o usuário administrador, obtenho:
glib.GError: Unable to connect to server
quando ele tenta mostrar a caixa de diálogo
Se eu executar novamente o script com o usuário admin e sudo
, isso funcionará.
A idéia é que isso seja executado a partir do cron e, a menos que eu possa fazer com que o cron execute o script, o usuário admin com sudo
não funcionará.
Alguma ajuda?
EDITAR
estas são as duas partes do script
essa parte é chamada toda vez que o script é executado e mostrará uma notificação com o tempo que o usuário deixou
u.get_time_left()
n = pynotify.Notification("Time Left", str(u.timeLeft / 60)+" Minutes remaining")
n.set_urgency(pynotify.URGENCY_CRITICAL)
n.set_timeout(10000) # 10 seconds
n.set_category("device")
helper = gtk.Button()
icon = helper.render_icon(gtk.STOCK_DIALOG_WARNING, gtk.ICON_SIZE_DIALOG)
#n.set_icon_from_pixbuf(icon)
try :
n.show()
Esta parte só é executada se determinadas condições forem cumpridas, ou seja, o tempo que elas restam é inferior a 5 minutos.
def getText():
#base this on a message dialog
dialog = gtk.MessageDialog(
None,
gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
gtk.MESSAGE_QUESTION,
gtk.BUTTONS_OK,
None)
dialog.set_markup('Your time limit is nearing the <b>end</b>')
entryUser = gtk.Entry()
entryPass =gtk.Entry()
entryUser.connect("activate", responseToDialog, dialog, gtk.RESPONSE_OK)
hbox = gtk.HBox()
hbox.pack_start(gtk.Label("Username:"), False, 5, 5)
hbox.pack_start(entryUser)
hbox.pack_start(gtk.Label("Password:"), False, 5, 5)
hbox.pack_start(entryPass)
dialog.format_secondary_markup("Please enter a new voucher <i>Username</i> and <i>password</i> to carry on your current session")
dialog.vbox.pack_end(hbox, True, True, 0)
dialog.show_all()
dialog.run()
username = entryUser.get_text()
password = entryPass.get_text()
dialog.destroy()
voucher = {'username':username,'password':password}
return voucher