PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : befehl als user ausführen



robiotor
14.07.04, 22:15
ich habe einen php script als root per cron laufen. das script soll machen unter anderem auch psy-bouncer starten/stopen dazu benutze ich den befehl



system("/usr/bin/sudo -u username /homedir/bouncerdir/./psybnc");

zum starten

der sagt mir aber in der console immer "Could not load language file, aborting."

wechsele ich in das dir und starte den prozess mit ./psybnc geht es einwandfrei

das problem habe ich auch bei andere befehle zb. wenn ich cp irgendwas nach irgendwo mache dann sagt er das die datei nicht existiert aber diese gibt es 100%ig

register_globals ist auf On gestellt, jemand ne idee sonst was es sein könnte ?

netmaster
14.07.04, 22:18
Versuch es mal mit

system("/usr/bin/sudo -u username /homedir/bouncerdir/psybnc");

robiotor
14.07.04, 22:23
nein das geht auch nicht, da sagt er das gleiche das ist auch wenn ich in der console als root eingebe

sudo -u username /homedir/bouncerdir/./psybnc oder auch
sudo -u username /homedir/bouncerdir/psybnc

immer wieder das gleiche. weitere tips bitte

Luzi P
14.07.04, 22:35
Vielleicht sucht das Skript die Datei im aktuellen Verzeichniss und findet es dann nicht. Wechsle doch vorher mit cd ins richtige Verzeichniss oder such in dem Startskript nach der Zeile, in der die Datei geladen werden soll und gib das ganze Verzeichniss mit an.

HackThor
14.07.04, 22:45
Das "Problem" beim sudo ist eventuell auch daß es keinen "echten" Login-Vorgang macht, sondern nur die IDs entsprechend ändert. Es kann sein daß dabei bestimmte Variablen nicht gesetzt/aktualisiert werden (z.B. PATH), oder Dateien wie die .bashrc etc. nicht ausgeführt werden, in denen weitere Variablen gesetzt werden können (die für das Programm notwendig sind).
Probier mal aus was bei einem
su -l username -c " /homedir/bouncerdir/psybnc" passiert. Damit wird ein echtes Login als der entsprechende User erzwungen. Sollte es damit gehen so liegt das Problem am "sudo".

ciao

Michael

robiotor
14.07.04, 22:49
Configuration File (null) not found, aborting
Run 'make menuconfig' for creating a configuration or create the file manually.

das sagt er dann, aber das configurationsfile vom psybnc ist vorhanden

gaansch
14.07.04, 23:27
Versuch das echt mal mit nem ChangeDir vorher. Der scheint wohl die Config im aktuellen Verzeichniss zu suchen und wenn du bsp im Verzeichnis /var/www bist und da /homedir/bouncerdir/psybnc ausführst, bist du ja immernoch im Verzeichnis /var/www.

`kk
14.07.04, 23:30
Kannst du diesem Script nicht den Standort der Konfigurations-Datei mitgeben?

Wenn nicht, änder es doch dahingehend um. :)

robiotor
15.07.04, 15:19
tatsächlich, ich mus erst in das home wechseln also benutze ich jetzt das da



chdir("/home/psybnc");
system("sudo -u username ./psybnc");


das problem jetzt ist das mir der prozess fast richtig gestartet wird aber nur fast.

das script hängt sich auf würde ich sagen, also es wird nicht beendet sondern zeigt mir die ausgabe vom psybnc. das ist nicht schlimm aber es beendet sich nicht. wenn ich ps aux |grep psybnc benutze schaut das so aus

b001_1 12220 0.0 0.0 0 0 pts/0 Z 17:14 0:00 [psybnc <defunct>
b001_1 12221 0.0 0.1 3024 1436 pts/0 S 17:14 0:00 ./psybnc

ich habe gehört system(); wartet bis der prozess beendet ist? wenn das so ist was kan man sonst nehmen ?

robiotor
15.07.04, 15:28
hehe problem gelöst

Beachten Sie auch, dass wenn Sie ein Programm mit dieser Funktion starten und Sie es im Hintergrund laufen lassen möchten, Sie sicherstellen müssen, dass die Ausgabe des Programms in eine Datei oder anderenen Ausgabestream umgeleitet wird. Andernfalls wird PHP solange laufen, bis das Programm beendet ist.