Linux 15.036 Themen, 107.107 Beiträge

Fehlermeldung aus root-script erzeugen

heriL / 4 Antworten / Baumansicht Nickles

Hallo,

ich möchte von einem Script eine Fehlermeldung ausgeben.
der Skript wird von udev gestartet, läuft also mit Rootrechten und ohne Konsole.
Daher die Idee "kdialog" zu verwenden.

Wenn ich den Script zum Testen von der Konsole starte kommt aber immer folgende Fehlermeldung:

xhost: unable to open display ""
Error: Can't open display:
kdialog: cannot connect to X server

was kann ich tun ?

Gruß
heriL

bei Antwort benachrichtigen
KarstenW heriL „Fehlermeldung aus root-script erzeugen“
Optionen

Kdialog mußt du nicht verwenden und das wird wohl auch nicht gehen. kdialog läuft im Grafikmodus unter dem X-Windowsystem oder kurz X.
Programme die in der Konsole laufen nutzen den Standardeingabekanal (hat die Nummer 0), den Standardausgabekanal (hat die Nummer 1) und den Standardfehlerkanal (hat die Nummer 2). Das sind Puffer vom Betriebsystem die automatisch geöffnet werden sobalb das jeweilige Programm gestartet wird.
Fehlermeldungen werden in der Regel auf Kanal 2 ausgegeben und man kann beispielsweise Fehlermeldungen in einem Script mit der Anweisung

"2>>/var/log/err.log"

in die Datei err.log im Verzeichnis /var/log ausgeben lassen.

Programme die unter X laufen verwenden diese Kanäle zur Ein- und Ausgabe von Daten nicht, sondern spezielle Funktionen aus der jeweiligen Bibliothek (QT oder GTK) mit denen sie programmiert wurden.

Besorg dir mal ein einfaches Lehrbuch für die Scriptprogrammierung:

http://www.amazon.de/Shell-Programmierung-Unix-Linux-Rainer-Krienke/dp/3446217223/ref=sr_1_7?ie=UTF8&s=books&qid=1232449177&sr=8-7



Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
KarstenW heriL „Fehlermeldung aus root-script erzeugen“
Optionen

"xhost: unable to open display ""
Error: Can't open display:
kdialog: cannot connect to X server"

kdialog ist ein Programm welches für den Grafikmodus programmiert wurde. Du kannst ja mal in der Wikipedia etwas über das X-Windowsystem nachlesen:

http://de.wikipedia.org/wiki/X_Window_System

Ohne den XServer kann ein Programm welches im Grafikmodus läuft , seine Daten auf dem Monitor nicht darstellen.
XServer gibt es auch für Windows zu kaufen.
Man kann mit Hilfe des XServers unter Windows die Ausgabe von einem Unix - oder Linuxprogramm anschauen, auch wenn es auf einem anderen Rechner im Netzwerk läuft (X Forwarding).


Du kannst den Standardausgabekanal und den Standardfehlerkanal in eine Datei mit dem Operator ">" oder ">>" umleiten.
Den Standardeingabekanal kann man mit dem Operator "<" umleiten und so eine Datei von einem Script einlesen lassen.

Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
heriL KarstenW „ xhost: unable to open display Error: Can t open display: kdialog: cannot...“
Optionen

danke für den Tip, ich habe ein Buch zur Script-Programmierung :-) habe aber die Lösung nicht gefunden darin.
Dein Vorschlag, die Fehlermeldung in eine Log-Datei zu schreiben ist ok und einfach realiserbar, löst aber meine Anforderung nicht.

Ich will den Stick stecken und dann sicher sein, daß kmail und andere Programme auf die Daten zugreifen können. Nur wenn es Probleme gab will ich einen Hinweis darauf erhalten, z.B. ein Popup-Fenster mit der Fehlermeldung, oder was auch immer. (Wäre auch ok, wenn ein Sternchen erscheint, so daß ich weiß es ist was schief gelaufen, ich muß in der Log-Datei nachsehen ;-) , aber es muß doch bessere Lösungen geben oder?)

Als normaler User kann ich xclock oder kdialog von der konsole aus starten, nur in diesem Script, der von Root gestartet wird und nicht in einem Terminal läuft, funktioniert es nicht.
Daher vermute ich die Ursache in einer Umgebungsvariablen, oder bringt es was, die Meldung über "xterm -e echo ..." auszugeben ?

Gruß
heriL

bei Antwort benachrichtigen
Borlander heriL „Fehlermeldung aus root-script erzeugen“
Optionen

Alternative Möglichkeiten zur Fehlerausgabe:
Mit sendmail eine Mail an den senden (lokal)
Gibt wahrscheinlich aber auch für Deine Desktop-Umgebung ein Tool um so eine Fehlerausgabe zu realisieren. Zumindest für Gnome hatte ich mal was zur Ausgabe einer Info als Wolke im Tray gesehen.
Ansonsten würde ich mal testen ob sich mit sudo -u username cmd was machen lässt. Keine Ahnung ob das funktionieren würde...

bei Antwort benachrichtigen