FHEM Forum

FHEM - Hardware => Einplatinencomputer => Thema gestartet von: klaus.schauer am 02 Januar 2014, 12:47:05

Titel: Raspberry Pi OS Restart
Beitrag von: klaus.schauer am 02 Januar 2014, 12:47:05
Wie startet man Linux innerhalb von Fhem beim Raspberry Pi neu?

Shell-Befehle wie
$cmd = '/usr/local/bin/gpio -p read ' . $adr;
$val = `$cmd`;

funktionieren. Aufrufe wie
$cmd = 'sudo /sbin/shutdown -r now';
$cmd = `$cmd`;

$cmd = 'sudo shutdown -r now';
$cmd = `$cmd`;

$cmd = 'shutdown -r now';
$cmd = `$cmd`;

aber nicht.

Fhem wurde unter der Kennung 'pi' installiert.
Titel: Antw:Raspberry Pi OS Restart
Beitrag von: KaiK am 02 Januar 2014, 14:41:45
"sudo reboot" sollte es tun!
Titel: Antw:Raspberry Pi OS Restart
Beitrag von: rudolfkoenig am 02 Januar 2014, 14:44:51
shutdown/reboot darf nur von root ausgefuehrt werden, und sudo verlangt vermutlich nach einem Passwort.

Ich wuerde versuchen in den sudoers Datei pi fuer shutdown ohne Passwort berechtigen, weiss aber nicht, ob/wie das geht. Alternativ dem shutdown ein root s-bit geben, dann kann jeder lokale Benutzer das Geraet herunterfahren.
Titel: Antw:Raspberry Pi OS Restart
Beitrag von: chris1284 am 02 Januar 2014, 17:47:38
man kann meine ich auch das pw an den befehl übergeben.

ist schon lange her das ich es mal brauchte, aber google hat die antwort:
http://stackoverflow.com/questions/11955298/use-sudo-with-password-as-parameter
Titel: Antw:Raspberry Pi OS Restart
Beitrag von: klaus.schauer am 03 Januar 2014, 09:37:16
Zitat von: chris1284 am 02 Januar 2014, 17:47:38
man kann meine ich auch das pw an den befehl übergeben.

ist schon lange her das ich es mal brauchte, aber google hat die antwort:
http://stackoverflow.com/questions/11955298/use-sudo-with-password-as-parameter
Ich habe zwei Varianten aus
http://www.pro-linux.de/kurztipps/2/1391/shutdown-fuer-unprivilegierte-benutzer.html
probiert: "/etc/shutdown.allow" und " /etc/sudoers". Mit
$cmd = 'sudo /sbin/shutdown -ar now';
$cmd = `$cmd`;

bzw.
$cmd = 'sudo /sbin/shutdown -r now';
$cmd = `$cmd`;

wird shutdown gestartet, aber nicht ausgeführt, sondern liefert im LOG:
sudo: no tty present and no askpass program specified
Titel: Antw:Raspberry Pi OS Restart
Beitrag von: juppzupp am 03 Januar 2014, 11:37:38
Welche distribution läuft denn auf dem raspi?
'Blinde' Idee : häng ein > /dev/null 2>&1  hinter dein Kommando.
Titel: Antw:Raspberry Pi OS Restart
Beitrag von: Hans Franz am 03 Januar 2014, 11:58:35
Zitat von: klaus.schauer am 03 Januar 2014, 09:37:16
sudo: no tty present and no askpass program specified
Moin,
Ich denke, sudo erfordert immer die Eingabe eines Passworts, egal welcher Befehl folgt.
Nimm doch Rudis Vorschlag mit dem s-Bit:
chmod u+s /sbin/shutdown
und lass das sudo im script weg.

Gruß
Hans
Titel: Antw:Raspberry Pi OS Restart
Beitrag von: juppzupp am 03 Januar 2014, 14:48:44
nicht auf den raspian images.

pi@fhem ~ $ sudo shutdown -k now

Broadcast message from root@fhem (pts/0) (Fri Jan  3 14:46:16 2014):

The system is going down to maintenance mode NOW!

Shutdown cancelled.
pi@fhem ~ $
Titel: Antw:Raspberry Pi OS Restart
Beitrag von: Hans Franz am 03 Januar 2014, 17:12:13
Zitat von: juppzupp am 03 Januar 2014, 14:48:44
nicht auf den raspian images.

stimmt.
Liegt wohl an der Zeile:
pi ALL=(ALL) NOPASSWD: ALL
in /etc/sudoers



Titel: Antw:Raspberry Pi OS Restart
Beitrag von: micomat am 03 Januar 2014, 18:14:31
ich bin immer fuer
sudo init 6
Titel: Antw:Raspberry Pi OS Restart
Beitrag von: klaus.schauer am 03 Januar 2014, 18:17:18
Zitat von: juppzupp am 03 Januar 2014, 11:37:38
Welche distribution läuft denn auf dem raspi?
'Blinde' Idee : häng ein > /dev/null 2>&1  hinter dein Kommando.
1. Raspbian
2. Probiere ich aus. Ich suche eine Lösung, die möglichst universell ist und auch von wenig sattelfesten Linux-Anwendern ausgeführt werden kann. M. E. ist es nicht hilfreich, wenn die Nutzer eines Fhem-Moduls noch etliche Linux-Einstellungen vornehmen müssen, damit es dann nach etlichen Forumsanfragen läuft.
Titel: Antw:Raspberry Pi OS Restart
Beitrag von: juppzupp am 03 Januar 2014, 20:44:24
Dafür sind die distries gerade bei priv escalation aber schon ganz schön unterschiedlich......hohes Ziel  ;)
Titel: Antw:Raspberry Pi OS Restart
Beitrag von: koldomon am 04 Januar 2014, 13:39:23
der user ist doch "fhem" auf dem RasPi und nicht "pi"

und er sudoers muss ein Eintrag für "fhem" und NOPASSWD rein, dann sollte auch der sudo reboot als User "fhem" möglich sein.
Titel: Antw:Raspberry Pi OS Restart
Beitrag von: samseo am 12 Februar 2016, 22:51:28
Zitat von: Hans Franz am 03 Januar 2014, 11:58:35
Moin,
Ich denke, sudo erfordert immer die Eingabe eines Passworts, egal welcher Befehl folgt.
Nimm doch Rudis Vorschlag mit dem s-Bit:
chmod u+s /sbin/shutdown
und lass das sudo im script weg.

Gruß
Hans
ich weiß ist zwar schon länger her aber danke das hat geholfen  :D :D :D ;D ;D ;D ;D ;D über glücklich
Titel: Antw:Raspberry Pi OS Restart
Beitrag von: LHBL2003 am 18 Dezember 2017, 22:20:50
Hi ich habe folgendes gemacht:


define Reboot dummy
attr Reboot webCmd on:off
define sw_ll_off notify Reboot:off {system('chmod u+s /sbin/shutdown');;}

Ich bekomme beim Klick auf off folgenden logeintrag

chmod: changing permissions of '/sbin/shutdown': Operation not permitted

Muss ich noch irgend etwas konfigurieren? Ist mein erster Shell Befehl aus fremden heraus.
Titel: Antw:Raspberry Pi OS Restart
Beitrag von: rudolfkoenig am 19 Dezember 2017, 08:31:31
chmod aendert die Berechtigung fuer die Ausfuehrung eines Programms, d.h. dein notify wuerde (so es funktionieren wuerde) kein reboot durchfuehren, sondern nur den Zugang regeln. Das klappt nicht, weil /sbin/shutdown nicht dem Benutzer fhem gehoert, daher die Fehlermeldung.

Was sinvoller waere: als root das chmod einmalig im terminal ausfuehren, und in der notify shutdown per "/sbin/shutdown" (ohne {system();;} ausfuehren.
Titel: Antw:Raspberry Pi OS Restart
Beitrag von: Wernieman am 19 Dezember 2017, 12:51:48
Nur .. warum willst Du Deinen Pi per Weboberfläche "einfach" restarten können? Normalerweise versucht man bei Problemen diese zu finden/zu lösen. Ein Restart verschiebt diese nur ... und vor allem gehen viele Infos über die Probleme verlohren, so das man sie schlechte rlösen kann.

Auch wenn es jetzt "hochnäsig" klingt: reboot ist "die Windows Lösung"
Titel: Antw:Raspberry Pi OS Restart
Beitrag von: LHBL2003 am 26 Dezember 2017, 07:58:13
Also danke für die Infos, leider habe ich diese jetzt erst gesehen, nachdem ich eine Lösung gefunden habe.

http://www.ueberueck.com/index.php/fhem-hausautomatisierung/fhem-how-to-s/raspberry-aus-fhem-neu-starten

sudo nano /etc/passwd

fhem:x:999:20::/opt/fhem:/bin/true
ändern in...
fhem:x:999:20::/opt/fhem:/bin/bash

sudo nano /etc/sudoers

Hinzufügen:
Defaults        requiretty
Defaults:%dialout        !requiretty
Defaults:fhem        !requiretty

fhem ALL=(ALL) NOPASSWD: ALL


Es gibt dinge im leben die kann man nicht unbedingt korrigieren.
Besonders bei Blackboxen oder Anwendungen die man nicht selbst geschrieben hat und nicht ändern möchte ;)
Ich bin Windows Anwendungsprogrammierer und meine Anwendungen müssen teilweise 24/7 laufen.
Zudem kommt die Wirtschaftlichkeit immer dazu (aufwand / nutzen Faktor) wer das nicht beachtet, sollte kein Unternehmen gründen. ;)
Titel: Antw:Raspberry Pi OS Restart
Beitrag von: Wernieman am 26 Dezember 2017, 17:01:36
fhem ALL=(ALL) NOPASSWD: ALL

BITTE: Schreibe dieses so NICHT! Damit ist fhem praktisch root ... mit allen negativen Konsequenzen!

Oder lässt Du Deine Windows-Anwendungen unter dem Admin laufen?
Titel: Antw:Raspberry Pi OS Restart
Beitrag von: kadettilac89 am 26 Dezember 2017, 17:06:18
Zitat von: LHBL2003 am 26 Dezember 2017, 07:58:13
Also danke für die Infos, leider habe ich diese jetzt erst gesehen, nachdem ich eine Lösung gefunden habe.
sudo nano /etc/sudoers

Hinzufügen:
Defaults        requiretty
Defaults:%dialout        !requiretty
Defaults:fhem        !requiretty

fhem ALL=(ALL) NOPASSWD: ALL



das ist die Lösung? Der Eintrag in der sudoers erlaubt dem user fhem ALL (alles) ohne Passwortabfrage mit SUDO auszuführen. Wenn du das bewusst so willst und die Risiken bewusst sind, gerne. Jeder der auf deine Weboberfläche kommt kann mit {system(xxx)} alles als Root ausführen.

Ich würde das einschränken, entweder auf die Lib oder das Script. Für alle die es nachmachen wollen ... Scripts müssen für den fhem-user ausführbar sein.


fhem ALL=(ALL:ALL) NOPASSWD: /usr/sbin/etherwake,/sbin/reboot,/usr/local/bin/apt_update.sh


Auslösen würde es z. B. ein notify. Der Shell-Befehl ist "reboot". Wenn sofort ohne Warten kommt noch ein " -p now" dazu.

def ntf_Reboot notify dy_Reboot:restart {system('sudo reboot');;}


Edit: Never edit this file with a normal text editor! Always use the visudo command instead! .... https://www.digitalocean.com/community/tutorials/how-to-edit-the-sudoers-file-on-ubuntu-and-centos