PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit PHP den Router ein Script ausführen lassen??



Maruu
13.08.02, 19:33
So hallo!
Ich versuche per PHP meinen Router ein Script ausführen zu lassen ich hab selber kein Plan von PHP hab aber mal in nem Forum gelesen das es so funktionieren sol:

Hab nun eine Datei namens anwahl.php so gemacht:

<?
$ausgabe=`/home/maruu/./log.sh`;
?>

dann müsste doch die log.sh Datei ausgeführt werden?? ich hab der Datei anwahl.php mit chmod ugo+rwx anwahl.php die meiner Meinung nach passenden Rechte gegeben und in den Ordner /usr/local/httpd/htdocs/ gelegt wo mein haupt Webverzeichnis ist. wenn ich nun über den Browser auf http://192.168.3.1/anwahl.php gehpassiert nix also er findet die Seite aber das wars auch weiße Seite und das angegebene Script das ich getestet hatte und das auch funktioniert wird nicht ausgeführt. Was mach ich Falsch??

MFG

Maruu

Harry
13.08.02, 22:04
Hallo Maruu,

Du solltest innerhalb Deines PHP-Skriptes auch eine Funktion aufrufen, die die Ausführung des Shell-Skriptes veranlaßt ;)

Beispiel:


<?php
exec('/home/maruu/./log.sh');
?>


Zu beachten ist dabei jedoch, dass Dein Skript unter der UID des Webservers ausgeführt wird und möglicherweise zu geringe Berechtigungen hat, um weitere Aktionen auszuführen.

Besseren PHP-Support bekommst Du sicherlich in unserem Partnerforum unter www.mrunix.de

Harry

morpheus2001
14.08.02, 12:50
hi,

das beste ist, du erstellst dir sowas wie eine übersetzungssoftware.

nimm ein bash script, dass die ganze zeit im hintergrund läuft. sobald du (mit php) eine exec file erstellst führt dein bash script einen bestimmten vorgang aus. wenn nötig kannst du mithilfe der exec file oder einer separaten file (ebenfalls mit php erstellt) parameter übergeben. ist dein bash script mit dem programm ablauf fertig, löscht es die exec file (para file) und erstellt eine weitere datei, die php sagt, dass das programm ausgeführt wurde. hier kannst du auch noch log dateien erstellen lassen, die php dann auslesen kann. deiner fantasie sind keine grenzen gesetzt. ich habs sogar fertig gebracht ein komplettes brennprogramm damit zu programmieren.

gruss
daniel

p.s. wenn nötig kann ich dir ein paar script ansätze posten!

Maruu
14.08.02, 12:58
Hallo!

Ich hab zwar eine PHP lösung hin bekommen aber weiter Ansätze wären natürlich immer klasse. Bitte poste mal ein paar ansätze.

MFG

Maruu

morpheus2001
14.08.02, 14:09
k also hier erstmal ein bash script:


---schnipp---
#!/bin/bash
EXEC_FILE="exec.file"
PARA_FILE="para.file"
READY_FILE="ready.file"
LOG_FILE="log.file"

while true
do
# Sofern EXEC FILE besteht
if [ -s $EXEC_FILE ]
then
# Optional: Hier liest er den Inhalt der Parameter Datei aus
# Das ganze wird in die Variable INPUT gespeichert
for INPUT in `cat $PARA_FILE`
do
[BEFEHL]>>$LOG_FILE
rm -rf EXEC_FILE;
rm -rf PARA_FILE;
echo "1">>READY_FILE
done
else
echo "no order"
fi
sleep 1
done
--schnapp---

jo und hier die php funktionen
---schnipp---

<?
# Config
$para_file = "para.file";
$exec_file = "exec.file";
$ready_file = "ready.file";
$log_file = "log.file";

# Functions

function ausfuehren($parameter){
# Prüfen ob Bash Script bereit ist
if(!file_exists($GLOBALS[ready_file])) die('Bash Script not ready!');
# Parameter Datei erstellen
$fp = fopen($GLOBALS[para_file],"w+");
fwrite($fp,"PARAMETER");
fclose($fp);
# Exec File erstellen
$fp = fopen($GLOBALS[exec_file],"w+");
fwrite($fp,1);
fclose($fp);
}
?>
---schnapp---

Jo die PHP Funktion entstand gerade spontan, hab sie also noch nicht auf parse errors getestet.

Gruss
daniel