Wissen

Raspberry Pi Shutdown über PHP und Webserver

Wenn man auf einem Raspberry Pi eh schon einen Webserver mit PHP Umgebung betreibt, dann macht es vielleicht auch einen Sinn den Raspberry Pi über den Webserver bzw. über einen PHP Befehl herunter fahren zu lassen. Im Grunde ist das nicht wirklich schwer, zumindest würde man dies meinen, wenn es nicht so eine Kleinigkeit geben, würde, die dem PHP Befehl ein Bein stellt! Die Krux an der Sache ist nämlich, dass der Webserver eigentlich nicht über die Rechte und Privilegien verfügt um den „Shutdown-Befehl“ auszulösen. Jetzt könnte man meinen – ist doch kein Problem, da setze ich einfach ein „sudo“ mit in den PHP Befehl und schon ist alles GUT! Doch leider funktioniert diese „Sudo-Trick“ nicht, wie ich mir dies vorgestellt hatte!

Damit PHP bzw. der Webserver-Nutzer das Shutdown Kommando absetzen und ausführen darf, müssen wir ihn dazu berechtigen. Am einfachsten funktioniert dies über diesen Befehl, welches das SUID-Bit setzt:

chmod +s /sbin/shutdown

Das ist zwar nicht wirklich schön, aber dafür schön „Quick and Dirty“.
Besser wäre es die ACL (etc/shutdown.allow) für den Shutdown-Befehl zu verändern und dort den entsprechenden Nutzer zu hinterlegen. Aber ich mag es so einfach wie möglich! Von da her gehe ich hier nicht näher darauf ein.

Als nächstes benötigen wir nur einen Einzeiler im PHP Script, welcher wie folgt aussehen könnte:

<?php
exec("/sbin/shutdown -h now");
?>

 

Würde man nun dieses File am Webserver aufrufen, so fährt der Raspberry Pi herunter!

Genauso könnte man natürlich auch einen Neustart des Systems auslösen!

Dafür modifizieren wird lediglich den Aufruf etwas:

<?php
exec("/sbin/shutdown -r now");
?>

Das war es dann auch schon! Ich wünsche Euch viel Spaß bei der Umsetzung Eures Projekts!


Tags:

  • raspi shutdown per website
  • raspi shutdown web
  • raspberry shutdown web
  • raspi über webserver herunterfahren
  • raspberry herunterfahre per script
Tags

Related Articles

2 Comments

  1. Hallo…
    gut erklärt und hat auch funktioniert…
    Würde gerne wissen wie man eine Zeitverzögerung einbauen kann, damit man das dann mit einem anderen php Script abbrechen kann…(shutdown -c)
    Geht das? Wenn ja wie?

    LG Sönke

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Close

Send this to a friend