Shell-Script per php-Aufruf ausführen

NuS

Registered User
Hallo Forum.

Habe mir jetzt schon den Wolf gesucht, aber noch nichts
gefunden, was meinem Problem entspricht:

Ich habe mir ein Shell-Script gebastelt, welches von mir vorgegebene
Verzeichnisse auf meinem VServer TARt und in einen Download-Ordner
verschiebt.
Von der Shell aus (mit root-Rechten) funkt das auch einwandfrei.

Nun hätte ich das gerne so, dass ich in meinem Admin-Bereich (per HTTP)
das Script starten kann. Das funktioniert aber nicht :-(

Die PHP-Seite sieht so aus:
PHP:
<?php
$output = "NULL";

$output = shell_exec("backup");

echo "<BR>Ausgabe: " . $output;
?>

Das Script heisst backup.sh und liegt im /backup-Verzeichnis.
Ein Symlink habe ich in /bin/backup -> /backup/backup.sh erstellt
und die Rechte sind folgendermassen gesetzt:

Code:
Original-Script:
-rwxrwxrwx    1 root     root          765 Oct 27 10:41 backup.sh

Code:
Symlink in /bin:
lrwxrwxrwx    1 root     root           17 Oct 27 08:00 backup -> /backup/backup.sh

Code:
PHP-Datei:
-rwxrwxrwx    1 web1     ftponly       359 Oct 27 19:18 backup.php

Die Ausgabe der .php-Seite:
Code:
Warning: shell_exec(): Cannot execute using backquotes in Safe Mode in /var/www/web1/html/backup.php on line 9

Ausgabe:

Ich habe den Safe-Mode aktiviert & möchte das auch so lassen.
Nur wie bekomme ich das Script ausgeführt?

Gruss
NuS
 
Vielleicht für dieses Script einen eigenen Confixx User anlegen und per HTTP Spezial Safe Mode nur für diesen Benutzer ausschalten?! :confused:
 
Soweit dieser User fixed sein soll, kannst du ihn ja auch schnell über die Console einrichten.
Ich benutze Confixx wirklich nur dann, wenn ich anderen Leuten was anbiete und alles variabel sein muss.
User anlegen.
Neuen vhost-entry.
Fertig.
;)
Wär das was?
 
Danke erstmal für die Antworten.
Werde das nächste Woche mal probieren.

Wie ist das eigentlich mit der Confixx-Funktion Backup (WWW & SQL)?
Da wird doch auch mit Shell-Befehlen (über ein Perl-Script) gearbeitet.
Oder liege ich da falsch?
 
Will noch jemand meinen Lösungsvorschlag hören?
...egal, ich schreibe es trotzdem... ;)

- Das Script in (x)inetd auf einen freien Port einbinden.
- Mit hostallow/-deny den Port auf localhost beschränken.
- PHP kann dann per fsockopen('localhost', Port); das Script starten.
- Und schon kann man behaupten, man habe eine Backuplösung als Serverapplikation... :)

huschi.
 
djrick said:
Wieso sind Huschi's Lösungen nur immer so kompliziert :eek: :confused:
Complicated but working...

Ich finde es nicht komplizierter als anderen vorgeschlagenen Lösungen.
Und ausserdem ist meine Lösung flexibel und leicht portierbar auf andere Probleme.
Man muß sich nur mal trauen in diese Richtung zu denken, aber Server-Systeme basieren genau auf dieser Denkweise... (Windows-Server mal ausgenommen!)

huschi.
 
Ich wuerde fast behaupten dass 'nus' nach 7 Jahren bereits eine Loesung gefunden hat.
Und dann noch eine Selbstmord-Loesung vor zu schlagen welche voraussetzt dass PHP shell_exec UND sudo-Rechte hat ist... SCHLIMM!
 
Back
Top