NAS herunterfahren - CMD Befehl

Begonnen von seb_dan, 10 August 2015, 21:18:32

Vorheriges Thema - Nächstes Thema

seb_dan

Hallo,

habe seit kurzem FHEM im Einsatz. Habe das ganze auf dem RaspberryPi installiert, läuft alles soweit gut. Hab nun meine NAS Synology DS215j in FHEM eingebunden. Wake on Lan funktioniert problemlos. Jetzt wollte ich aber, dass der FHEM Server auch in der Lage ist, die NAS herunterzufahren.
Dazu habe ich schon alles vorbereitet, damit eine Authentifizierung ohne Passwort per key möglich ist. Läuft alles bestens. Kann nun also wenn ich mich auf den pi von meinem MacBook verbinde, problemlos folgenden command ausführen:

ssh root@192.168.178.24 -i /home/pi/id_rsa poweroff

Um den shutdown command in FHEM nutzen zu können, habe ich folgende Zeilen in der 99_myUtils.pm hinzugefügt.
sub ds_shutdown {
system("ssh root@192.168.178.24 -i /home/pi/id_rsa poweroff");
}

Wenn ich nun den ds_shutdown command Befehl ausführe, tut sich leider nichts. Im Log steht nur
2015.08.10 21:00:40 3: [DS215j] shutdownCmd: {ds_shutdown} executed
2015.08.10 21:00:41 3: [DS215j]-1


Habt ihr eine Idee?
Sebastian

marvin78

Mit welchem User hast du denn den/die Schlüssel übertragen? Der FHEM User muss Zugriff auf das NAS erhalten.

seb_dan

Kopiert habe ich das ganze mit dem pi User, einen anderen gibt es auf dem pi nicht. Aktuell gibt es bei mir auch noch keinen Authentifizierung oder sonstiges am Webinterface.
Nur damit ich es verstehe. Der Prozess FHEM müsste doch eigentlich als pi, also mit dem Benutzer gestartet sein, mit dem ich es installiert habe?
Habe jetzt mal testweise den key in /tmp kopiert und den Pfad angepasst.
Aber wie gesagt, wenn ich am pi mit dem pi User eingelegt bin und den command so eingebe, klappt es problemlos. Nur aus FHEM heraus leider nicht.

Sunny

#3
Hallo Sebastian,

glaube bitte Marvin78!

Und beim installieren auf dem pi, musstest Du auch die Rechte für FHEM eingeben.
Wenn ich es richtig weiß ist FHEM kein User aber ein Prozess.
Lege auf Deinem nas den User: fhem FHEM an. :)

Viele Grüße
Sunny
FHEM 6.0 (RPi's 1b-4,CeleronM,Odroid C1+)
1-Wire (DS18B20,DS2406) |miniCUL|miniCUL868WLAN|HM|IT(-1500,LR-3500) |FB6591,FB7490,FB7580|DECT200|Powerline546E|520E|openwrt
Anfänger: Linux,FHEM+Perl

seb_dan

Vielen Dank, ich habe den Benutzer jetzt mal angelegt und erneut getestet, jetzt müsste es ja klappen.
Aber für mich zum Verständnis.
Verstehen tu ich es noch nicht wirklich 100%ig, da ich ja beim Aufruf ssh pi@... eingebe.

Habe nun folgendes gemacht.
Habe auf der NAS den Benutzer FHEM angelegt und alles entsprechend konfiguriert und kopiert bzw. berechtigt, damit ich mit diesem in der Konsole über folgenden Befehl ohne Kennwort zugreifen kann.

ssh FHEM@192.168.178.24 -i /tmp/id_rsa

Habe im Anschluss die 99_My_Utils wie folgt angepasst.
sub ds_shutdown {
system("ssh FHEM@192.168.178.24 -i /tmp/id_rsa poweroff");
}


Klappt leider immer noch nicht, wo ist der Fehler?

Virsacer

Der User, unter dem FHEM läuft (normalerweise "fhem"), braucht Zugriff (Leserechte) auf einen Key.
Dieser muss für einen User auf dem NAS gültig sein, der berechtigt ist, das System runterzufahren (normalerweise "root").
Der Key darf aber auch nicht "zu viele" Leserechte haben, sonst meckert ssh...

Mit "ssh root@192.168.178.24 -i /home/fhem/.ssh/id_rsa poweroff" sollte das Ganze dann funktionieren ;)

Wernieman

Am besten, Du legst den Key uim .ssh Verzeichnis des Users an, unter dem fhem läuft.

das .ssh-verzeichnis muß dann auch dem fhem-User gehören und nur der sollte Lese/schreibrechte auf das verzeichnis habben.

Mal als "Pseudokode"
# Unter welchem user läuft FHEM
ps aux | grep [f]hem
# Bei einer Standartinstallation sollte in der ersten Spalte fhem stehen, sonst untenstehende Befehle anpasen
# Standartordner rausfinden
grep fhem /etc/passwd
# in der 4. Spalte, standard /opt/fhem, sonst untenstehende Befehle anpasen
cd /opt/fhem
mkdir .ssh
# Nun bitte den priv-Key in das Verzeichnis .ssh packen
cp ......
# Nun muß das Verzeichnis fhem mit passender Gruppe und passender Berechtigung gehören
chown -R fhem: .ssh
chmod 700 .ssh
chmod 600 .ssh/*
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html