Anzeige:
Ergebnis 1 bis 10 von 10

Thema: skript mit sudo aus php aufrufen - fehlermeldung "[ too many arguments"

  1. #1
    Registrierter Benutzer
    Registriert seit
    13.09.2004
    Beiträge
    5

    skript mit sudo aus php aufrufen - fehlermeldung "[ too many arguments"

    Hallo zusammen!
    Ich habe mir gestern für den einwahlserver ein skript geschrieben, daß erstens ein paar dateien untersucht, ob eine 0 oder 1 drinne steht.
    Code:
    #!/bin/bash
    $andre='more /tmp/192.168.0.1'
    $roman='more /tmp/192.168.0.2'
    
    if [ $roman = "0" ] ; then
    echo "Roman ist offline"
    else
    echo "Roman ist online"
    fi
    
    if [ $andre = "0" ] ; then
    echo "Andre ist offline"
    else
    echo "Andre ist online"
    fi
    
    if [ $andre = "0"] ||[$roman = "0" ] ; then
    gooffline
    else
    goonline
    fi
    In der konsole ausgeführt klappt das prima. Wenn ich das ding über ein php-skript, wegen der rechte in sudo aufrufe kann ich im apache: error_log sehen, daß er den Fehler
    "[ too many arguments"
    ausgibt.
    Jetzt frage ich erst mich und jetzt euch, warum das so ist!!!
    Danke
    Benni

  2. #2
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    wie sieht denn dein Aufruf von php aus?
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  3. #3
    Registrierter Benutzer
    Registriert seit
    13.09.2004
    Beiträge
    5

    so sieht er in php aus

    passthru("sudo online.sh"); oder system(...);
    Benni

  4. #4
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    ich hrbeite selbst nicht mit sudo, gehe bei ähnlichen Probs aber wie folgt vor:

    1. ab auf die Linux-shell
    2. su wwwrun
    3. befehl genauso ausführen wie er übergeben wird "online.sh"

    mögliche Fehler entstehen häufig durch unvollständige Referenzierung des aufzurufenden programms bzw. der als param übergebenen Datei "/usr.../sudo ./test.sh" ... "./test.sh" anstelle "test.sh"

    ich würde damit ein wenig rumprobieren...
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  5. #5
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    ggf. ist ja das hier eine hilfe Link
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  6. #6
    Registrierter Benutzer
    Registriert seit
    13.09.2004
    Beiträge
    5

    Interessanter weise...

    ... funktioniert ja die Ausgabe genau::
    Code:
    echo "Andre online<br>"
    Das erscheint ja auch im Browserfenster (Andre online).
    Aber es erscheint eben immer, egal was in der abfrage if ... passiert, weil php->sudo scheinbar garnicht mit den eckigen klammern zurecht kommt - aber warum? Warum kann es in der shell so ausgeführt werden und mit sudo nicht?
    Absolut referenziert habe ich sie auch: also angefangen mit "/usr/...".
    Ich bin ja auch schon so direkt online und offline gegangen:
    Code:
    passthru("/usr/bin/goonline");
    Ich raff's einfach nicht. Die Fehlermeldung in der errors_log ist da recht eindeutig. So habe ich ja auch sudo konfiguriert: Es war genau zu erkennen, woran es lag - die Fehlermeldungen erscheinen also definitiv in der log-datei.
    Benni

  7. #7
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    Zitat Zitat von benni1000
    ... funktioniert ja die Ausgabe genau::
    Code:
    echo "Andre online<br>"
    Das erscheint ja auch im Browserfenster (Andre online).
    Das erstaunt mich nicht, da es nichts mit der shell zu tun hat...

    Poste doch einfach mal deinen php-code, dann kann man besser drüber nachdenken.

    Wenn's an der Configuration von sudo liegen sollte, bist du
    dort gut aufgehoben.
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  8. #8
    Registrierter Benutzer
    Registriert seit
    13.09.2004
    Beiträge
    5

    mehr php-code...

    ... gibts da eigentlich nicht:
    sinngemäß - da ich bis morgen abend nicht mehr an den server komme:
    Code:
    if $command == "verbinden"
       passthru("echo 1 > /tmp/$_SERVER[REMOTE_IP]");
    
    if $command == "trennen"
       passthru("echo 0 > /tmp/$_SERVER[REMOTE_IP]");
    
    passthru("sudo /usr/bin/online.sh");
    Habe mich gerade auch mal in der sudo - Mailingliste gemeldet. Mal sehen was von dort aus kommt! Ich denke es liegt am sudo. Aber ich dachte hier weiß vielleicht jemand über solche Probleme bescheid.
    Benni

  9. #9
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    wenn die anderen passthru-Anweisungen funktionieren liegt's wahrscheinlich am sudo...

    sorry, war nur ein Versuch

    alternativ zum sudo könntest du doch die Datei direkt in php auslesen. Dann hast du's mit einer Komponente weniger zu tun...

    mit file() bzw. fopen(),fread() usw. kannst du die Datei einlesen und dann den Inhalt auswerten...

    andererseits ist's sicherlich spannend zu wissen warum es mit sudo nicht will...
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  10. #10
    Registrierter Benutzer
    Registriert seit
    13.09.2004
    Beiträge
    5

    "more" brachte das Problem

    ... denn mit cat funktioniert es super. Die sudo - Mailing-List hat mir geholfen. Trozdem auch Danke nach hier her!
    Benni

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •