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.
"sudo reboot" sollte es tun!
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.
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
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
Welche distribution läuft denn auf dem raspi?
'Blinde' Idee : häng ein > /dev/null 2>&1
hinter dein Kommando.
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
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 ~ $
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
ich bin immer fuer
sudo init 6
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.
Dafür sind die distries gerade bei priv escalation aber schon ganz schön unterschiedlich......hohes Ziel ;)
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.
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
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.
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.
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"
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. ;)
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?
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