Hallo, ich nutze ein Perl-Script, welches zwecks grafischer Ausgabe die TK-Erweiterung nutzt. (Mit "graf. Ausgabe" möchte ich sagen, daß das Script eine Dialogbox auf die KDE-Oberfläche ausgibt.) Das Script funktioniert auch ganz wunderbar sofern ich es entweder in einem KDE-Konsolenfenster (xterm) aufrufe, oder mittels "Befehl ausführen" von der KDE-Oberfläche aus starte. Das Script wird unmittelbar und automatisch nach beenden einer "Internet-Sitzung" ("Surfen...") gestartet. Bis hierhin funktioniert das auch schon. Durch den Aufruf des Scripts in /etc/ppp/ip-down wird es tatsächlich aufgerufen und ausgeführt. Woran es nun aber noch klemmt ist: Das mit der grafischen Ausgabe funktioniert nicht sobald das Script mittels Aufruf aus der ip-down gestartet wird. Ärgerlicherweise erscheint noch nicht mal eine Fehlermeldung, auch nicht in /var/log/messages. Habe im Archiv unter den Stichworten "ip-down" und "automatisch" leider nichts gefunden was zur Aufklärung beigetragen hat. Hat jemand eine Vermutung wo es klemmt? Wieso funktioniert die Ausgabe immer genau dann nicht, wenn das Script mittels Aufruf aus der ip-down gestartet wird? Ralph (Susi7.0,Einzelplatzrechner,Modem)
On Fre, Jun 08, 2001 at 11:26:11 +0200, Ralph Müller wrote:
Hallo,
ich nutze ein Perl-Script, welches zwecks grafischer Ausgabe die TK-Erweiterung nutzt. (Mit "graf. Ausgabe" möchte ich sagen, daß das Script eine Dialogbox auf die KDE-Oberfläche ausgibt.) Das Script funktioniert auch ganz wunderbar sofern ich es entweder in einem KDE-Konsolenfenster (xterm) aufrufe, oder mittels "Befehl ausführen" von der KDE-Oberfläche aus starte. [...] Woran es nun aber noch klemmt ist: Das mit der grafischen Ausgabe funktioniert nicht sobald das Script mittels Aufruf aus der ip-down gestartet wird.
Ganz einfach: Auf das Display darf nur der eingeloggte Benutzer schreiben, nicht ein Prozess eines anderen Nutzers (Im Falle von ip-down wohl root?). Mir fällt da spontan keine elegante Lösung ein, habe mich auch nie so richtig damit beschäftigt. Was ich probieren würde (Es gibt aber bestimmt elegantere Wege) wäre, einen Wrapper um das Perl-Skript zu packen, der als Daemon unter Deiner SuerID läuft und irgendwie ein Signal aus der ip-down bekommt ("sudo -u deinlogin kill -HUP daemon.pl") und dann reagiert... Hmmm... ob das so elegant ist? Sollte aber funktionieren. ciao Jan
* Jan Kirchhoff schrieb am 09.Jun.2001:
On Fre, Jun 08, 2001 at 11:26:11 +0200, Ralph Müller wrote:
ich nutze ein Perl-Script, welches zwecks grafischer Ausgabe die TK-Erweiterung nutzt. (Mit "graf. Ausgabe" möchte ich sagen, daß das Script eine Dialogbox auf die KDE-Oberfläche ausgibt.) Das Script funktioniert auch ganz wunderbar sofern ich es entweder in einem KDE-Konsolenfenster (xterm) aufrufe, oder mittels "Befehl ausführen" von der KDE-Oberfläche aus starte.
Woran es nun aber noch klemmt ist: Das mit der grafischen Ausgabe funktioniert nicht sobald das Script mittels Aufruf aus der ip-down gestartet wird.
Ganz einfach: Auf das Display darf nur der eingeloggte Benutzer schreiben, nicht ein Prozess eines anderen Nutzers (Im Falle von ip-down wohl root?).
Richtig es darf kein anderer auf X schreiben und ip-down wird als root ausgeführt.
Mir fällt da spontan keine elegante Lösung ein, habe mich auch nie so richtig damit beschäftigt. Was ich probieren würde (Es gibt aber bestimmt elegantere Wege) wäre, einen Wrapper um das Perl-Skript zu packen, der als Daemon unter Deiner SuerID läuft und irgendwie ein Signal aus der ip-down bekommt ("sudo -u deinlogin kill -HUP daemon.pl") und dann reagiert... Hmmm... ob das so elegant ist? Sollte aber funktionieren.
Ich verstehe nicht ganz, was Du Jan willst? Es reicht doch, wenn man das Skript als User ausführt, also im /etc/ppp/ip-up.local [1] sowas wie su -u USER skript schreibt. root kan mit su alles aufrufen, ohne daß nach einem Paßwort gefragt wird, daher ist sudo unnötig. Ein kill und gar ein eigener Dämon werden erst Recht nicht benötigt Problematisch dabei ist, daß es nur auf einem User abgestimmt ist. Vielleicht läßt es sich herausfinde, wer gerade auf :0 arbeitet. Aber ich schätze mal, es ist so wie so immer der Gleiche. Das nächste Problem ist, ich würde mir auf jeden Fall mal Gedanken machen, was ist, wenn X nicht läut. Dann funktioniert das alles natürlich nicht. Stell Dir Ralph vor, Du hast eine neue Graphikkarte, oder einen neuen Kernel eingebunden und X funktioniert nicht mehr. Du willst eine Frage an diese Liste oder sonstwo stellen. Was Du dann am allerwenigsten gebrauchen kannst ist dann auch noch Ärger mit ip-down. Nun gut, weil es ip-down und nicht ip-up ist, wird wahrscheinlich nicht allzuviel passieren, aber trotzdem. ip-up und ip-down schicken übrigens anders als cron keine Mails. Evtl. Ausgaben, die nicht umgelenkt wurden, landen ins Nirrevana. Deshalb hinter allem ein >> $LOGFILE 2>&1 und am Anfang definieren, was LOGFILE ist. So kann man LOGFILE leicht ändern. Auch eine Ausgabe auf /dev/tty12 oder so wäre möglich. Ach, so Du verwendest perl, nun ja, da sieht es ähnlich aus. [1] ich hoffe, Du hast /etc/ppp/ip-down.local benutzt. /etc/ppp/ip-down.local wird von /etc/ppp/ip-down aufgerufen, fals vorhanden, hat aber den Vorteil, daß es nicht von SuSEconfig überschrieben wird. Bernd -- Bitte die Etikette beachten: http://home.t-online.de/~f.walle/etikette.html Bitte Realnamen angeben, kein Vollquoting, kein Html, PGP oder Visitenkarten benutzen. Signatur mit "-- " abtrennen, bei Antworten "Re: " voranstellen, sonst nichts. |Zufallssignatur 4
[ #Fehlerbild: Perl-TK-Script liefert grafische Ausgabe nur dann, wenn ersteres vom eingeloggten User selbst gestartet wurde. #Fehlerursache: Nur der eingeloggte Benutzer darf auf "seine" Oberfläche schreiben. Wenn das Script unter einem anderen User oder root läuft funktioniert die graf. Ausgabe nicht. ] Ein ganz riesiges Dankeschön für alle Lösungen (von Bernd, Jan, ...). Ich bin ganz happy daß es jetzt funktioniert. Nur zur Info: ich habe folgende Lösung ausgewählt: ip-down.local ruft nun auf: su --command=/home/ralph/bin/MeinScript.pl ralph Diese Zeile von root aufgerufen bewirkt, daß MeinScript.pl unter dem User "ralph" ausgeführt wird. Bernd Brodesser wrote: [...]
Vielleicht läßt es sich herausfinde, wer gerade auf :0 arbeitet. [...] Ja, mit dem Test von last | grep "ralph :0 | grep "still logged in" müßte diese Aufgabe (glaube ich) ebenfalls gelöst sein. :-)
Grüße aus Frankfurt, Ralph (Suse7.0/Einzelplatzrechner)
participants (3)
-
Bernd Brodesser
-
Jan Kirchhoff
-
Ralph Müller