Frage

Ich habe ein Skript, viele Befehle enthält, die Root-Rechte benötigen. Statt im Skript mit sudo all diesem Befehl ausführt Ich ziehe das gesamte Skript mit sudo auszuführen. Dies ist auch bequemer in der sudoers-Datei zu setzen.

sudo ./script.sh

Aber ich mag den Fortschritt mit einem kdialog Fortschrittsbalken zeigen, die nicht funktioniert. Das Meldungsfeld an der Latte enthält, zeigt, aber bei dem Versuch, den Fortschritt zu aktualisieren gibt es eine Fehlermeldung „Objekt nicht erreichbar“.

dcopRef=`kdialog --progressbar "Initialising..." 5`  # works
dcop $dcopRef setProgress 1  # error object not accessible

Ich bin mir ziemlich sicher, dass es mit Benutzerrechten zu tun hat, da Code der Fortschrittsbalken funktioniert dann das Skript ohne sudo aufrufen, aber ich habe keine Ahnung, wo ich anfangen soll. Wer weiß, wie dies zu beheben und noch das Skript mit sudo nennen?

Ich bin mit openSUSE 10.3 mit KDE 3.5.7

Danke, Chris

War es hilfreich?

Lösung

Schließlich fand ich einen Weg, um mein Problem zu lösen! Es ist nicht schön, aber es funktioniert ...

in der Datei ‚script.sh‘ Sie die Fortschrittsbalken zugreifen wie das Original (nicht root) Benutzer mit Hilfe von sudo:

dcopRef=`sudo -H -u $SUDO_USER kdialog --progressbar "Initialising..." 5`
dcop sudo -H -u $SUDO_USER $dcopRef setProgress 1

Sie müssen explizit erlauben root aufrufen verwenden ‚kdialog‘ und ‚dcop‘ als Benutzer (obwohl dies ein wenig seltsam scheint), indem Sie diesen in Ihre sudoers Datei zuerst:

root  ALL = (ALL)  NOPASSWD: /opt/kde3/bin/

Voilà.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top