MacMini Ruhezustand via FHEM

Begonnen von fhainz, 17 Dezember 2013, 20:53:58

Vorheriges Thema - Nächstes Thema

Puschel74

Hallo,

fehlt hier nicht noch das if  ???
{if (Value($NAME) eq "on" ) ...

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Koppl

oh, hab ich beim eintragen ins Forum vergessen.

Ich meine der Befehl wird nicht weitergeben ans Terminal.

Klinki

Ist zwar schon etwas älter das Thema, aber vielleicht sind meine Erkenntnisse jemandem von Nutzen.

Auf eine Raspberry Pi wird fhem normalerweise unter dem Unix-Benutzer "fhem" ausgeführt. Damit man aus fhem ssh-Verbindungen mit anderen Systemen herstellten kann, benötigt der Unix-User "fhem" sudo-Rechte.
In einigen Threads liest man immer wieder von Leuten, die den Benutzer fhem in die Gruppe "root" eingepflegt haben. Damit läuft fhem mit root-Rechten. Davon ist strikt abzuraten!

Für unsere Problematik reicht es, dem Benutzer fhem die gleiche sudo-Berechtigung wie dem Raspi-eigenen User "pi" zu verpassen. Dazu die Datei /etc/sudoers anpassen:

pi ALL=(ALL) NOPASSWD: ALL
fhem ALL=(ALL) NOPASSWD: ALL


Anschließenden Reboot nicht vergessen!

Ein notify mit abgesetztem ssh-Befehl könnte so aussehen:

define MusikAus notify Musik:off { system("sudo ssh -o ConnectTimeout=3 zbox init 0");; fhem("sleep 50;;set harmony_34246653 PowerOff;;sleep 3;;set HM_ST_01_Sw off;;");;}

Voraussetzung ist natürlich der SSH-Zugang auf das fremde System (hier:zbox - mein Multimedia-Sklave ) ohne Passwort.
Das Timeout von 3 Sekunden ist optional.
Die langen Wartezeiten mit sleep geben dem box-Rechner genug Zeit um sauber herunter zu fahren.
Dahinter folgen noch ein paar fhem-Befehle.

So fahre ich meine HiFi-Anlage, inkl. einem Linux-Rechner mit Kodi, vollständig herunter.

jroos

justme1968

#33
um ssh zu nutzen braucht man keine sudo rechte und man muss ssh auch nicht mit sudo ausführen sondern beim ssh kommando den den user angeben als der man auf dem ziel system aufschlagen will und für den fhem user dafür sorgen das er ein .ssh verzeichnis mit passendem known_hosts file hat.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Klinki

Das ist richtig!
In meinem Fall war es praktisch für diese Geschichte root zu nutzen. Ich hatte halt schon einen Schlüssel, der auf allen meinen Linux-Boxen einen schnellen root-Zugriff ermöglicht. Also sudo.

Aber Andre hat Recht! Seine Variante ist auf jeden Fall auch die Bessere. Mit root-Rechten sollte man immer vorsichtig sein!

Danke für den Hinweis!


moppy

Servus,

vielleicht kann ich dem ein oder anderem helfen: Habe die letzten Tage genau dieses Vorhaben auch selbst bei mir versucht und kam immer wieder ins stolpern: für einen Anfänger wie mich war es nicht ganz trivial und selbsterklärend.

Vorhaben: Mac Mini (als HTPC mit Plex) per FHEM (läuft auf einem Raspberry) mit Terminalbefehlen zu füttern, sprich: Ruhezustand, Apps starten, Festplatten mounten und auch auswerfen

Zuerst muss dem Raspberry ein SSH Zugang ohne Passwort auf dem Mac erlaubt werden. Das funktioniert mit sog. Puplic-RSA-Keys.

Problem Nr.1: Fhem läuft auf dem Benutzer "fhem" (wohl bei den meisten) und nicht als Benutzer "pi" .. Somit muss man sich, um den Key zu erzeugen, erstmal auf dem Benutzer "fhem" per SSH am Raspberry einwählen. Das ist aber standardmäßig deaktiviert, bzw hat der Benutzer "fhem" gar kein Passwort. Um es trotzdem zu ermöglich wie folgt vorgehen (alles am Raspberry per SSH)

Zitatsudo nano /etc/passwd

und den Eintrag

Zitatfhem:x:999:20::/opt/fhem:/bin/false
in
Zitatfhem:x:999:20::/opt/fhem:/bin/bash

ändern + Speichern

Dann kann man sich in den Benutzer "fhem" einwählen, das darf aber nur der Benutzer root. Also erst als root, dann als fhem anmelden (evtl. vorher ein root passwort vergeben, das hatte ich aber vor einiger Zeit schon erledigt)

Zitatsu - root

dann

Zitatsu - fhem

und erst jetzt kann der Key erzeugt werden:

Zitatssh-keygen -t rsa -C MacMini@Emanuels-Mini.fritz.box

hier entsprechend den Benutzername und die IP/Hostname vom zu steuerndem Mac eintragen

3x mit Enter bestätigen (also ohne Kennwort und den Speicherpfad nicht verändern)

dann wird der Key auf den Mac kopiert:

Zitatcat /opt/fhem/.ssh/id_rsa.pub | ssh MacMini@Emanuels-Mini.fritz.box 'cat >> .ssh/authorized_keys'

auch hier natürlich wieder anpassen und den Benutzernamen und IP/Hostname vom eigenen Mac eingeben. Hier muss einmalig das Kennwort vom Mac Mini angegeben werden. Jetzt kann der SSH Zugang getestet werden, normalerweise ist kein Passwort mehr notwendig.

Jetzt noch die Änderung in /etc/passwd rückgängig machen (den Eintrag ,,fhem:x:999:20::/opt/fhem:/bin/bash" in ,,fhem:x:999:20::/opt/fhem:/bin/false" ändern.

Hier ein paar Beispielbefehle, die so direkt in FHEM funktionieren

Ruhezustand aktivieren
Zitat{system ("ssh MacMini\@192.168.178.28 pmset sleepnow")}

Die App Plex schließen
Zitat{system ("ssh MacMini\@192.168.178.28 osascript -e \\\'quit app \\\"Plex\\\"\\\'")};;

Festplatte auswerfen
Zitat{system ("ssh MacMini\@192.168.178.28 diskutil unmount /dev/disk1s2")}

Plex öffnen
Zitat{system ("ssh MacMini\@192.168.178.28 open -a Plex")}

hoffentlich habe ich nichts vergessen :)
Intel NUC7i5 - Proxmox
HP Microserver Gen8 3,3ghz Xeon
http://coldcorner.de