PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Root Programme in Scripten starten



corax2.05
02.05.04, 14:25
hi ich will mir ein einfaches startscript schreiben. darin sollen 2 root-programme gestartet werden.
hab mir das ungefähr so gedacht:


#!/bin/bash
su
cd /pfad/sonstwohin
./prog1
cd /pfad/woandershin
./prog2


leider läuft das script nach der passworteingabe nicht mehr weiter.

iceface
02.05.04, 15:03
Hallo!

Füge mal hinter su ein "-c" an, dann sollte es gehen.

corax2.05
02.05.04, 15:17
ne tut nich:

su: Diese Option benötigt ein Argument -- »c«

iceface
02.05.04, 15:21
Ja, dahinter sollte auch gleich der Befehl erscheinen, in etwa so:

su -c cd /pfad/sonstwohin && ./prog1 && .....

real-challo
02.05.04, 15:22
ne tut nich:

su: Diese Option benötigt ein Argument -- »c«


Wenn Du root bist, und als user ausführen möchtest :
su - user -c "programm"

Wenn Du user bist, und als root ausführen möchtest, musst du sudo benutzen ! (oder root bekommt kein Passwort -aber das willst du sicherlich nicht!)

corax2.05
02.05.04, 15:25
ja der user soll das script ausführen.

also so?


#!/bin/bash
sudo
cd /xxx
./yyy

iceface
02.05.04, 15:29
Also, bei mir funktioniert das gut so wie ich es vorhin geschrieben habe, fehlten nur die Zeichen:

su -c "cd /pfad/sonstwohin && ./prog1"

führt zur Passwortabfrage und wenn erfolgreich, dann startet das Programm.

iceface
02.05.04, 15:31
Wenn Du user bist, und als root ausführen möchtest, musst du sudo benutzen ! (oder root bekommt kein Passwort -aber das willst du sicherlich nicht!)

Das stimmt so nicht.

corax2.05
02.05.04, 15:37
Also, bei mir funktioniert das gut so wie ich es vorhin geschrieben habe, fehlten nur die Zeichen:

su -c "cd /pfad/sonstwohin && ./prog1"

führt zur Passwortabfrage und wenn erfolgreich, dann startet das Programm.

hast recht so funktionierts :)

danke dir!!

iceface
02.05.04, 15:38
bitte, bitte! gern geschehen!

sepp2k
02.05.04, 15:39
Alternativ geht auch folgendes:

#!/bin/su root
cd /pfad/sonstwohin
./prog1
cd /pfad/woandershin
./prog2

corax2.05
02.05.04, 15:49
Alternativ geht auch folgendes:

#!/bin/su root
cd /pfad/sonstwohin
./prog1
cd /pfad/woandershin
./prog2

joa geht auch :)

danke auch an dich.

könnte man auch innerhalb des scripts wieder zu user wechseln und noch ein prog. als user starten?

sepp2k
02.05.04, 15:53
könnte man auch innerhalb des scripts wieder zu user wechseln und noch ein prog. als user starten?
Naja, man könnte das Prog per
su -c "Programm" USER
starten oder ein zweites Skript aufrufen, das mit
#!/bin/su USER
anfängt. Aber, für den Fall ist Icefaces Lösung wohl besser geeignet (weil da alles, was nicht in deer su-Zeile steht, als User ausgeführt wird)

corax2.05
02.05.04, 16:03
hm... da gibts dann aber ein problem...
das letzte programm bleibt in der konsole aktiv und dadurch wird das nächste (user-prog.) nicht gestartet bis ersteres beendet wird.

aber is auch nicht soo wichtig. die zwei klicks zum starten bekomm ich schon noch hin ;)

iceface
02.05.04, 16:09
das letzte programm bleibt in der konsole aktiv und dadurch wird das nächste (user-prog.) nicht gestartet bis ersteres beendet wird.

Du kannst ein Programm mit "&" in den Hintergrund schicken, danach kann das nächste Programm gestartet werden.

corax2.05
02.05.04, 16:10
muß aber leider im vordergrund bleiben da ich es sonst nicht bedienen kann.

iceface
02.05.04, 16:24
Du kannst es doch erst mal in den Hintergrund schicken, das nächste Programm starten und dann wieder in den Vordergrund bringen. "screen" würde sich da anbieten, geht aber auch ohne.

sepp2k
02.05.04, 16:26
muß aber leider im vordergrund bleiben da ich es sonst nicht bedienen kann.
Dann starte das erste Programm in einem eigenem xterm:
su -c "xterm -e 'cd /pfad/sonstwohin && ./prog1'"&

corax2.05
02.05.04, 17:15
ne irgendwie klappt das nicht.

so sieht das immoment aus, die pfade hab ich weggelassen, die brauch ich in dem fall hier ja nicht.


#!/bin/bash
su -c "rcdvb start && runvdr"

danach sollte jetzt noch "kvdr" starten, als user. runvdr bleibt (und muß auch) in der konsole aktiv.
alle versuche runvdr in einem extra xterm zu starten haben nicht funktioniert... aber das lag bestimm an mir :rolleyes:

iceface
02.05.04, 17:54
danach sollte jetzt noch "kvdr" starten, als user.

Warum startest Du das Programm nicht schon vorher als user und bringst es in den Hintergrund? Danach starte als root den Rest.
Wann das Programm gestartet wird, sollte in Deinem Fall eigentlich egal sein:

#!/bin/bash
kvdr &
su -c "rcdvb start && runvdr"

Hoffe das hilft, ansonsten sieh Dir mal "screen" an, damit kann man mehrere virtuelle Terminals auf einer Konsole verwalten.

corax2.05
02.05.04, 18:06
ne das geht leider nicht.
kvdr gibt da ne fehlermeldung aus, sprich ich kann es erst starten wenn der vdr auch läuft.
aber bevor ich mir jetzt noch einen mit "screen" abbreche starte ich kvdr lieber von hand. so übermäßig oft benutze ich das ganze ding dann doch nicht.

nochmals danke an euch zwei!