Device Actions: Mehrere root Kommandos mit && verknüpfen?

02/10/2009 - 22:08 von Arno Wald | Report spam
Hallo,

nachdem ich hier vor kurzem von der Möglichkeit erfahren habe, selber Device
Actions definieren zu können, versuche ich nun, eine Aktion einzurichten,
die mir als root ein Backup auf eine frisch eingeschaltete, externe Platte
durchführt.

1) Die Kommandos sollen also unter dem root Account laufen.

2) Die Kommandos sollen mit && verknüpft werden.

3) Die Ausgabe der Skripte soll zu sehen sein (bspw. in einem konsole
Fenster).

4) Das Fenster soll nach dem letzten Kommando nicht automatisch geschlossen
werden.

Ich habe nun schon verschiedene Varianten versucht, bspw. diese hier:

kdesu -c 'konsole -e "dirvish-expire && dirvish-runall && umount %f"'

Damit lief das erste Kommando "dirvish-expire" tatsàchlich an, die weiteren
Kommandos wurden aber nicht ausgeführt. Auch schloss sich das konsole
Fenster nach Beenden des Kommandos.

Weiß jemand, wie man das hinbekommt? Ich könnte mir jetzt ein Shell-Wrapper-
Skript schreiben, aber ich würde schon gerne herausbekommen, wie es ohne
geht, in der Hoffnung, noch etwas zu lernen.

Nebenbei: Was bedeutet der Parameter "-c" bei kdesu? Damit gibt man ein
auszuführendes Kommando an. Aber das kann man doch auch so, ohne das "-c",
wenn ich die man-page bzw. --help Ausgabe richtig verstehe.

Zum Testen kann man, denke ich, ganz gut, so etwas hier benutzen:

/usr/lib/kde4/libexec/kdesu -c 'konsole -e "echo eins && echo zwei && echo
drei"'


Gruß und Danke,
Arno
 

Lesen sie die antworten

#1 Rolf Magnus
02/10/2009 - 22:43 | Warnen spam
Arno Wald wrote:


Hallo,

nachdem ich hier vor kurzem von der Möglichkeit erfahren habe, selber
Device Actions definieren zu können, versuche ich nun, eine Aktion
einzurichten, die mir als root ein Backup auf eine frisch eingeschaltete,
externe Platte durchführt.

1) Die Kommandos sollen also unter dem root Account laufen.

2) Die Kommandos sollen mit && verknüpft werden.

3) Die Ausgabe der Skripte soll zu sehen sein (bspw. in einem konsole
Fenster).

4) Das Fenster soll nach dem letzten Kommando nicht automatisch
geschlossen werden.

Ich habe nun schon verschiedene Varianten versucht, bspw. diese hier:

kdesu -c 'konsole -e "dirvish-expire && dirvish-runall && umount %f"'

Damit lief das erste Kommando "dirvish-expire" tatsàchlich an, die
weiteren Kommandos wurden aber nicht ausgeführt. Auch schloss sich das
konsole Fenster nach Beenden des Kommandos.

Weiß jemand, wie man das hinbekommt?



konsole --hold -e /usr/lib/kde4/libexec/kdesu -c "dirvish-expire && dirvish-runall && umount %f"

Ich könnte mir jetzt ein
Shell-Wrapper- Skript schreiben, aber ich würde schon gerne
herausbekommen, wie es ohne geht, in der Hoffnung, noch etwas zu lernen.

Nebenbei: Was bedeutet der Parameter "-c" bei kdesu? Damit gibt man ein
auszuführendes Kommando an. Aber das kann man doch auch so, ohne das "-c",
wenn ich die man-page bzw. --help Ausgabe richtig verstehe.



Ohne -c wird einfach das angegebene Programm ausgeführt. Mit -c wird eine
Shell gestartet und das Kommando darin ausgeführt. kdesu -c "irgendwas"
dürfte also àquivalent sein zu kdesu "sh -c irgendwas".
Man beachte auch, daß bei meiner Lösung oben das -c wichtig ist, weil sonst
natürlich nur dirvish-expire aufgerufen wird, mit &&, dirvish-runall, &&,
umount, %f, &&, read und foo als Kommandozeilenparameter, da ja dann keine
Shell gestartet würde, die das && interpretieren könnte. Das ist es auch,
was du bei deiner Lösung siehst. Wenn du unbedingt auch die Konsole als
root ausführen willst, würde also auch gehen:

/usr/lib/kde4/libexec/kdesu -c "konsole --hold -e sh -c 'dirvish-expire && dirvish-runall && umount %f'"

Ähnliche fragen