topgunfb
Posts: 3
Joined: Tue Sep 11, 2012 11:41 am

Shell-Script per www ausführen

Thu May 09, 2013 12:27 pm

Hi zusammen,

bin neu und habe eine Frage.
Wie sieht der Website-Code aus, um per Button auf einer Page ein Shell-Script des Users pi (oder eines Anderen) auszuführen? Das Script liegt augenblicklich noch in pi´s-Home, kann aber auch ins DocumentRoot des Apache wandern.
Ich möchte gern per Webseite ein WOL-Aufruf für meinen Mediaserver absetzen. Da dieser nicht per Portfreigabe nach Außen offen ist und das so bleibt, war der Plan, den Rpi als www-Server einzusetzen und den WOL-Aufruf per Website umzusetzen.

Das WOL-Script ist fertig und funktioniert. Jetzt muss es nur noch in ne Page passen. How2?
Das Script selbst ist nur ein Programmaufruf des Programms "wakeonlan" mit der MAC-Adresse des Mediaservers.
Das "Script" könnte alternativ auch in die Page eingebunden werden. Es soll nur verhindert werden, dass der gemeine Webbenutzer meinem Mediaserver auf die Pelle rückt.

Ich nutze "wheezy" in der aktuellsten Fassung und der Pi hängt per LAN am www.

Schonmal danke vorab.

Gruß
topgunfb

sesam
Posts: 16
Joined: Sun Apr 28, 2013 7:45 pm

Re: Shell-Script per www ausführen

Thu May 09, 2013 5:11 pm

Bin gerade dabei, etwas ähnliches zu programmieren.

Nur soll der Befehl nicht von einer Website kommen, sondern mit einer email geschickt werden.
Die Logik soll so ein:
User schickt email mit Code an RPi >>>>> RPi checkt email, erkennt Code (Python) >>>>> schreibt Code in *.sh-Datei >>>>> *.sh-Datei wird ausgeführt
Im Grunde läuft das dann über fetchmail > procmail > *schreiben in eine .sh-Datei*


Der Umweg Python >>> bash-Script ist nicht unbedingt notwendig wenn man etwas bessere Programmierkenntnisse in Python hat. Hab ich nicht, deswegen mach ichs so.

Man kann das ganze natürlich so erweitern, dass nur Emails von einer Whitelist akzeptiert werden,
oder dass ein Schlüsselwort im Betreff stehen muss o.ä.

Was nun der Code konkret ist, ist dann eigentlich egal. Das könnte auch dein WOL-Script sein.


Wenn du Interesse hast, dann kann ich dir die Code-Schnipsel mal hier reinstellen.
Bin nur dieses Wochenende unterwegs und werde das erst Anfang nächste Woche machen können.

topgunfb
Posts: 3
Joined: Tue Sep 11, 2012 11:41 am

Re: Shell-Script per www ausführen

Fri May 10, 2013 8:05 am

Hi sesam,

danke für die Antwort.
Jeder Code-Schnipsel ist willkommen :-)

Evtl. kann ich das ja umbiegen auf die Website-Geschichte.
Ein "fetig" implementierbares Script wäre mir dennoch lieber, aber vielleicht bekomme ich es auch so mal hin.

Mit meinem Arduino war das kein Problem, da konnte ich per Website Schalten und Walten... Damals hatte ich das mit einem digitalen I/O-Port geregelt, der parallel an den Power-Button angeschlossen war.
Leider musste ich auf ein neues Gehäuse ausweichen, weshalb ich die Verkabelungsarbeit nochmal machen müsste.
Wenn es aber per WOL geht ist es wesentlich schöner und kann auch für andere Geräte mit WOL-Funktion verwendet werden.

Danke + Gruß
topgunfb

schnoog
Posts: 12
Joined: Tue Dec 27, 2011 3:55 pm
Contact: Website

Re: Shell-Script per www ausführen

Fri May 10, 2013 8:55 am

Einfacher Lösungansatz:

Gegeben: Skript liegt unter /home/pi/meinskript.sh
und benötigt su-Rechte um WOL zu senden.

Step1:
Sofern nicht bereits geschehen: sudo installieren

Step2:
sudoers anpassen. Dazu mit "visudo" arbeiten und folgende Zeile ans Ende der Datei hängen:
www-data ALL= NOPASSWD: /home/pi/meinskript.sh
und speichern

Step3:
Nun kann man in php mit dem Aufruf

Code: Select all

<?php
$script = "sudo /home/pi/meinskript.sh";
$run=`$script`;
?>
das Shell Skript starten.

User avatar
mline
Posts: 1433
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: Shell-Script per www ausführen

Fri May 10, 2013 9:06 am

<~~>

topgunfb
Posts: 3
Joined: Tue Sep 11, 2012 11:41 am

Re: Shell-Script per www ausführen

Fri May 10, 2013 11:10 am

@ schnoog & mline,

Vielen Dank. Werde es heute Abend mal testen und berichten was passiert ist.

Super.

Gruß
topgunfb

User avatar
xenoist
Posts: 14
Joined: Fri Apr 26, 2013 8:33 am
Location: Germany
Contact: Website

Re: Shell-Script per www ausführen

Fri May 10, 2013 11:27 am

Auch mit Typo3 ausführbar:
This could be used with Typo3 too:

<?php

function cpu_get_temp()
{
exec('sudo /opt/vc/bin/vcgencmd measure_temp', $output, $return_var);
if($return_var) return FALSE;
foreach($output as $line)
if(substr($line, 0, 5) == 'temp=')
return substr($line, 5, -2);
}

/*
install sudo for temperature
visudo:
apache ALL = NOPASSWD: /opt/vc/bin/vcgencmd measure_temp

*/

$content .= "Running on: " ; $content .= php_uname("s") ." " ; $content .= "Version "; $content .= php_uname("r") ." " ; $content .= php_uname("m")." " ; $content .= "<br /> Temperature: " . cpu_get_temp() . "°C" ;
// $content .= php_uname("s"); $content .= php_uname("r"); $content .= php_uname("v"); $content .= php_uname("m") ;
?>
https://it-shamans.eu GPG: 1024D/F96BC5FD xenoist at web.de

User avatar
xenoist
Posts: 14
Joined: Fri Apr 26, 2013 8:33 am
Location: Germany
Contact: Website

Re: Shell-Script per www ausführen

Fri May 10, 2013 11:35 am

In Typo3 template:

10 = PHP_SCRIPT_EXT
10.file = scriptdir/os.php
https://it-shamans.eu GPG: 1024D/F96BC5FD xenoist at web.de

User avatar
peba
Posts: 56
Joined: Tue Jun 12, 2012 8:16 pm
Location: Austria Korneuburg
Contact: Website

Re: Shell-Script per www ausführen

Sat May 11, 2013 2:08 pm

Code für einen Button in Html zum Aufruf von script.sh.
Für die Dateiendung *.sh muß dann noch ein cgi assign in der
Configurationsdatei deines Web Servers stehen.

<button name="Klickmich" type="button" value="Test" onclick="self.location.href='../cgi-bin/script.sh'">
<p><img src="icon.jpg" alt="" border="5" height="150" width="150"><br>
<b>Test</b>
</p></button>

mfG
Peter Bauer
http://bitkistl.blogspot.com

Return to “Deutsch”