Seite 1 von 2

Verfasst: Samstag 19. April 2008, 16:38
von Ubuntuxer
Der User mit dem du das Programm aufrufst, ist nicht gleich dem User mit der X-Session. Es muss der gleiche User sein, denn normalerweise dürfen fremde User keine Fenster in der X-Session öffnen.
Ich habe aber nur einen Bentzeraccount auf dem Rechner.
Statt gksu könntest du sudo nehmen...
Aber ich müsste doch dann das Passwort im Terminal eingeben, aber ich will eigentlich weg von der Konsoleneingabe :?

Könnte es vielleicht daran liegen das ich Hardy benutze und dass es wegen dem neuen PolicyKit Probleme gibt. Bug? Was mich vor allem wundert ist, dass es bei os.system ohne Probleme geklappt hat.

Verfasst: Samstag 19. April 2008, 16:42
von Trundle
``'DISPLAY': os.environ['DISPLAY']`` noch in das env-dict von subprocess.Popen packen.

Verfasst: Samstag 19. April 2008, 17:23
von Ubuntuxer
Ich habs mal eingefügt:

Code: Alles auswählen

subprocess.Popen(['gksu', script_path], env = {'var': 'a', 'DISPLAY': os.environ['DISPLAY']})
aber immer noch bekomme ich nur eine Fehlermeldung
No protocol specified
(gksu:5872): Gtk-WARNING **: cannot open display: :0.0

Hat noch jemand eine Idee?

PS: Meine absolute Notlösung wäre eine temporöre Bash-Script Datei mit Python zu erzeugen, welche dann die Variable an das andere Bash-script übergibt und die Passwortabfrage übernehmen würde.

Verfasst: Samstag 19. April 2008, 21:23
von Leonidas
Du kannst aber auch versuchen, dein gesamtes Environment bei env mit einzupacken und dann nur um die Variablen die du brauchst zu ergänzen. Ist warscheinlich sowieso schlauer.

Verfasst: Samstag 19. April 2008, 22:08
von Ubuntuxer
Tut mir leid, aber ich verstehe nicht was du mit Environment meinst. :(

Verfasst: Samstag 19. April 2008, 22:22
von Leonidas
Ubuntuxer hat geschrieben:Tut mir leid, aber ich verstehe nicht was du mit Environment meinst. :(
Deine Umgebungsvariablen.

Verfasst: Samstag 19. April 2008, 22:45
von Ubuntuxer
Ok, aber ich verstehe das trotzdem noch nicht so ganz. Wie soll ich denn alle Umgebungsvariablen bei env einpacken?
Wie genau hilft mir das bei meinem Problem mit gksu?

PS: Ich habs auch mal mit kdesudo probiert gleiches Problem wie gksu.

Verfasst: Samstag 19. April 2008, 22:48
von Leonidas
Ubuntuxer hat geschrieben:Ok, aber ich verstehe das trotzdem noch nicht so ganz. Wie soll ich denn alle Umgebungsvariablen bei env einpacken?
``env=os.environ`` zum testen. Wenn es dann tut, dann heißt es, dass es neben $DISPLAY noch weitere Umgebungsvariablen benötigt.

Verfasst: Samstag 19. April 2008, 23:02
von Ubuntuxer
Es funktioniert leider nicht, hängt sich nun ohne Fehlermeldung einfach auf.

Verfasst: Montag 21. April 2008, 09:41
von jens
Ubuntuxer hat geschrieben:Es funktioniert leider nicht, hängt sich nun ohne Fehlermeldung einfach auf.
Ich denke nicht, das es sicht aufhängt, sondern wahrscheinlich einfach blockiert, weil auf eine Eingabe gewartet wird. Vielleicht läuft ja gksu irgendwo und du siehst es nur nicht.

Aber nochmal, warum verwendest du nicht das normal "sudo" so das der User im Terminal das Passwort eingeben kann?

Teste doch mal, was passiert, wenn du den selben Aufruf per sh script machst. Funktioniert es dann?

Verfasst: Montag 21. April 2008, 09:49
von Rebecca
jens hat geschrieben:Aber nochmal, warum verwendest du nicht das normal "sudo" so das der User im Terminal das Passwort eingeben kann?
Falls sich das nicht in der Zwischenzeit geaendert hat, geht das nicht, da su, sudo etc nur Passwoerter nehmen, die ueber ptys/ttys kommen, nicht ueber Pipes. Siehe z.B. in diesem Thread.

Verfasst: Montag 21. April 2008, 15:15
von Ubuntuxer
Aber nochmal, warum verwendest du nicht das normal "sudo" so das der User im Terminal das Passwort eingeben kann?
Ich möchte das Script in einer GUI starten und dann ist es ziemlich blöde wenn man das Passwort im Terminal eingeben muss.
Falls sich das nicht in der Zwischenzeit geaendert hat, geht das nicht, da su, sudo etc nur Passwoerter nehmen, die ueber ptys/ttys kommen, nicht ueber Pipes. Siehe z.B. in diesem Thread.
danke, dies dürfte das Problem lösen;
Ich möchte aber eigentlich unoffizielle Pythonmodule vermeiden, deshalb habe ich mich entschlossen das Problem zu lösen, indem ich das Script so verändere das es sich selbst mit root rechten aufruft, da ich sowieso an dem Script etwas verändern muss und es deshalb komplett in eine Liste speichern muss, oder würdet ihr mir davon wehemend abraten?

Verfasst: Montag 21. April 2008, 17:12
von defiance
Besteht bei GKSU nicht, wie sudo auch, die Möglichkeit auf die Passworteingabe zu verzichten?
Eine weitere, wenn auch sehr häßliche Methode die Umgebungsvariablen zu benutzen ist diese in sudo oder bei dir gksu mit rein zu packen.
Aber nachdem ich diesen Thread gelesen habe, werde ich wohl auch die Variante mit dem Subprozess probieren, diese sieht für mein Problem sehr vielversprechend aus und ist wesentlich eleganter als mein Ansatz.