Hallo,
weiß jemand wie ich ein Python Script über einen Button auf einer Website starten kann?
Ich bin leider ein totaler php Anfänger und würde mich sehr über Code-Beispiele freuen.
Gruß Felix
Hallo,
weiß jemand wie ich ein Python Script über einen Button auf einer Website starten kann?
Ich bin leider ein totaler php Anfänger und würde mich sehr über Code-Beispiele freuen.
Gruß Felix
Python Scripte mit Button aktivieren? Schau mal ob du hier fündig wirst!
Sorry, ich versteh leider nicht genau wie du das meinst, könntest du mir vielleicht ein Beispiel als Link zeigen oder so ähnlich?
Gruß Felix
Bitte sehr. Wenn die scripte root rechte erfordern muss aber noch mehr gemacht werden. Stichwort für die Forensuche: sudoers
Du kannst in PHP shell-Befehle ausführen, Stichwort "Webscript". Forensuche erzählt dir mehr.
Super, das habe ich gesucht, aber wie kann ich es machen, das es nur dann ausgeführt wird, wenn ich auf einen Button drücke?
Gruß Felix
Schauste mal bei Buttons.
Here you go (nächster Schritt):
http://www.homeandlearn.co.uk/php/php4p5.html
Diesen lässt du einfach eine Funktion aufrufen und dann ist es doch schon fertig.
Du solltest ersteinmal PHP-Grundlagen lernen... Die Frage erledigt sich von ganz alleine
Super, das habe ich gesucht, aber wie kann ich es machen, das es nur dann ausgeführt wird, wenn ich auf einen Button drücke?
Mach einfach das was Horroreyes in Beitrag#5 geschrieben hat, darüber findest du einige Beispiele
Ich machs dir aber ausnahmsweise bequem und verlink dir die entsprechenden Thread (mit hoffnung das der nächste der sowas sucht hier findet und keinen neuen Frage-Thread erstellt):
Eine Kombination aus diesem und diesem
Und für diejenigen die diese Links nicht klicken können:
Sobald du ein Script über sudo ausführst werden die dadrin enthaltenen Befehle auch mit root rechten ausgeführtWie gesagt, das einfachste aus meiner sicht ist ein Script /var/sudowebscript.sh in /etc/sudoers einzutragen: www-data ALL=NOPASSWD:/var/sudowebscript.sh
Das Script ausführbar machen: chmod +x /var/sudowebscript.shIn dem Script durch ein case verschiedene Befehle zu definieren, zB für dein obiges Beispiel:
Bash Alles anzeigen#!/bin/bash # # sudo web script allowing user www-data to run commands with root privilegs case "$1" in sispmctl) sispmctl -o 1 ;; *) echo "ERROR: invalid parameter: $1 (for $0)"; exit 1 ;; esac exit 0
Und in deinem PHP Script rufst du dann folgendes auf:
PHP Alles anzeigenexec('sudo /var/sudowebscript.sh sispmctl',$output,$error);[/php] Wenn der Befehl eine Ausgabe hat wird das ins array $output hinterlegt. Gabs ein Fehler wird das array $error befüllt (ansonsten ist das leer) Wenn du dann später mehr Befehle verwenden möchtest brauchst du das nur im sudowebscript.sh ergänzen... /etc/sudoers kann so bleiben wie es ist ;) Also zB: [code] #!/bin/bash # # sudo web script allowing user www-data to run commands with root privilegs case "$1" in sispmctl) sispmctl -o 1 ;; reb) reboot ;; *) echo "ERROR: invalid parameter: $1 (for $0)"; exit 1 ;; esac exit 0
PHP Alles anzeigenexec('sudo /var/sudowebscript.sh reb',$output,$error); if (isset($output) AND !empty($output)) { foreach ($output AS $line) { echo "$line<br/>"; } }[/php] Oder das sudowebscript.sh kann auch so aussehen: [code] #!/bin/bash # # sudo web script allowing user www-data to run commands with root privilegs dingsda() { ls -la ls -la / echo $1 } case "$1" in sispmctl) sispmctl -o 1 ;; dingens) dingsda "fertig" ;; *) echo "ERROR: invalid parameter: $1 (for $0)"; exit 1 ;; esac exit 0
Und das mit den Buttons:
Alles anzeigen
In deinem Code fehlt das übermitteln des FormularsDas form ansich reicht dafür nicht, du brauchst auch noch ne "submit" Schaltfläche oder irgendwelche Buttons die das form übermitteln
Siehe dazu zum Beispiel http://www.w3.org/TR/html401/interact/forms.html oder http://de.selfhtml.org/html/formulare/formularbuttons.htmDas einfachste wäre wenn du deinem <button> einfach den type="submit" hinzufügst aber eine Value solltest du auch angeben damit der 'name' nicht empty is Und dann wäre die Überprüfung auch einfacher...
[code=php]
<html>
<head>
<?php
if (isset($_POST['LED']) AND !empty($_POST['LED'])) {
if ($_POST['LED'] == "RedON") { exec('sudo python /var/www/red_on.py'); }
if ($_POST['LED'] == "RedOFF") { exec('sudo python /var/www/red_off.py'); }
if ($_POST['LED'] == "YellowON") { exec('sudo python /var/www/gpio/yellow_on.py'); }
if ($_POST['LED'] == "YellowOFF") { exec('sudo python /var/www/gpio/yellow_off.py'); }
if ($_POST['LED'] == "GreenON") { exec('sudo python /var/www/gpio/green_on.py'); }
if ($_POST['LED'] == "GreenOFF") { exec('sudo python /var/www/gpio/green_off.py'); }
}
?><title></title>
</head>
<body>
<form method="post">
<table style="width: 75%; text-align: left; margin-left: auto; margin-right: auto;" border="0" cellpadding="2" cellspacing="2">
<tr>
<th style="text-align: center;">Turn LED on</th>
<th style="text-align: center;">Turn LED off</th>
</tr>
<tr>
<td style="text-align: center;"><button type="submit" name="LED" value="RedON">Red On</button></td>
<td style="text-align: center;"><button type="submit" name="LED" value="RedOFF">Red Off</button></td>
</tr>
<tr>
<td style="text-align: center;"><button type="submit" name="LED" value="YellowON">Yellow On</button></td>
<td style="text-align: center;"><button type="submit" name="LED" value="YellowOFF">Yellow Off</button></td>
</tr>
<tr>
<td style="text-align: center;"><button type="submit" name="LED" value="GreenON">Green On</button></td>
<td style="text-align: center;"><button type="submit" name="LED" value="GreenOFF">Green Off</button></td>
</tr>
</table>
</form>
</body>
</html>
[/php]
Die erste if Schleife prüft erstmal ob $_POST['LED'] überhaupt gesetzt und nicht leer ist..
Für das danach wäre es einfacher wenn es nur ein python Script gäbe an das dann einfach übergeben wird welche LED wie geschaltet werden soll, aber das hab ich jetzt mal weggelassenDu kannst dir auch anzeigen lassen was $_POST beinhaltet:
[code=php]var_dump($_POST);[/php]
/EDIT: Deine Datei muss auf *.php enden also: index.php
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!