FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Thema gestartet von: Breaked am 14 Juni 2016, 22:03:53

Titel: [ERLEDIGT] QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 14 Juni 2016, 22:03:53
Nabend zusammen,

ich habe bereits über das WOL-Modul den Start meines QNAP-TVS-463 aus dem Ruhezustand heraus ermöglicht.
Das ganze ist auch zusätzlich über Siri integriert.

Nun würde ich das NAS noch gerne via FHEM in der Ruhemodus versetzen können.
Ich habe zwar ein paar Infos aus Google herausziehen können, doch so recht funktioniert es bei mir nicht.

Was über die Konsole super funktioniert, ist: ssh admin@10.0.0.10 halt
Dies versetzt das NAS, nach einer Passwortabfrage, in den Ruhemodus.

Eventuell würde dies ja auch über FHEM funktionieren, doch ich habe da leider zu wenig Erfahrung.
Für eine kurze Hilfe wäre ich sehr dankbar!


LG



Ausführliche Anleitung:
https://ownsmarthome.de/2017/06/howto-qnap-in-fhem-wol-ruhemodus/ (https://ownsmarthome.de/2017/06/howto-qnap-in-fhem-wol-ruhemodus/)



Tutorial
QNAP in den Ruhemodus schicken, mittels dem "WOL" Modul.

Schritt 1:
Dem User fhem einen passwortlosen Login ermöglich, wie in diesem Post (https://forum.fhem.de/index.php/topic,46557.msg382975.html#msg382975) beschrieben. Stichwort SSH-Keys.

ZitatAuf dem QNAP eine Public Key erzeugen (Per ssh und dem admin-account auf dem NAS einloggen)
ssh-keygen -t rsa –C admin@IP-QNAP


Dann mit pi auf dem Raspberry einloggen und RSA Key erzeugen
login pi
ssh-keygen -t rsa -C pi@IP-Raspberry
Auf das Zielsystem kopieren
ssh-copy-id -i ~/.ssh/id_rsa.pub admin@IP-QNAP


Schritt 2:
Bash-Skript erzeugen. Dieses Skript liegt auf meinem Pi unter "/opt/fhem/FHEM/" und heißt "qnap.sh".
Der Inhalt dieses Skript sieht so aus:
#!/bin/bash
ssh admin@10.0.0.10 '/bin/echo mem > /sys/power/state 2>/dev/null &'
DATE=$(date +%Y.%m.%d)
TIME=$(date +%T)
echo $DATE $TIME "3: QNAP TVS-463 in den Ruhemodus versetzen"
exit 0


Schritt 3:
Im WOL-Modul in FHEM
attr shutdownCmd { qx("/opt/fhem/FHEM/qnap.sh") }
setzen.

Nun sollte schon alles funktionieren :)
Man kann nun das ganze via FHEM testen, ob das NAS in den Ruhemodus fährt.
Hoffentlich kann ich dem ein oder anderen damit helfen.

Der meiste Dank geht aber an CoolTux!
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 14 Juni 2016, 22:08:43
Das geht nicht. Was Du machen kannst ist ssh mit hilfe von Zertifikatsanmeldung (http://wiki.qnap.com/wiki/SSH:_How_To_Set_Up_Authorized_Keys) zu verwenden und dann über fhem notify sowas zu machen.


qx(ssh admin@10.0.0.10 'halt')


Grüße
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 14 Juni 2016, 22:10:40
Okay, danke dir schonmal.
Dann werde ich mich in dieses Thema mal einlesen müssen.
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 15 Juni 2016, 18:14:10
Hab mal deinen Link durchgelesen. So ganz will es mir aber nicht in den Sinn.
Gibt es keine andere Alternative?!
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: dev0 am 15 Juni 2016, 19:02:21
Eine Alternative wäre sshpass.
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 15 Juni 2016, 19:18:58
Schau Dir mal das Modul 74_HOMBOT an, suche darin nach sshpass. Das kann Dir als Beispiel dienen.
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 17 Juni 2016, 16:25:28
Hallo zusammen.

Ich bin nun etwas weiter gekommen. Mittels sshpass funktioniert nun der gewünschte Ruhemodus so:
/usr/bin/sshpass -p 'password' ssh admin@10.0.0.10 "/bin/echo mem > /sys/power/state 2>/dev/null"

Diesen Befehl würde ich natürlich gern via FHEM und dem WOL-Modul ausführen lassen.
Doch wenn ich den Code attr QNAP shutdownCmd {system ("/usr/bin/sshpass -p 'password' ssh admin@10.0.0.10 "/bin/echo mem > /sys/power/state 2>/dev/null"")} verwende, wird das NAS nicht in den Ruhemodus gefahren.

Es wird mit den " zusammen hängen, doch ich habe leider nicht herausgefunden, wie FHEM den Befehl verstehen könnte.
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 17 Juni 2016, 16:28:52
Noch mal. Schau Dir an wie das im Hombot Modul gemacht wird. Ein besseres Beispiel kann man nicht bekommen. Ich habe keine Lust Dir jetzt hier den Befehl vor zu beten. Es steht ein zu ein im Modul drin.
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 17 Juni 2016, 18:05:06
Sorry, aber dafür stecke ich nicht so tief in der Materie drin. Ich habe es mir zwar angeschaut, aber ich glaube ich sehe nicht das, was ich eigentlich sehen soll.

Habe mich hiermit (http://wiki.qnap.com/wiki/SSH:_How_To_Set_Up_Authorized_Keys) mal versucht, doch trotz dieser Schritte authentifiziert der Pi sich am NAS noch immer nicht ohne Passwort. Irgend eine Kleinigkeit mache ich da bestimmt falsch.

Vom Grundprinzip ist es doch so(?):
Ich generiere einen pubic_key auf dem Pi.
Dann kopiere ich den id_rsa.pub in den ssh Ordner auf das NAS.
Den Inhalt des id_rsa.pub kopiere ich in die Datei authorized_keys (aufs NAS).
Dann doch nur einmal über den Pi als User fhem aufs NAS einloggen und ggf. die RSA key Abfrage mit "yes" bestätigen.
Danach sollte sich der User fhem doch ohne Authentifizierung einloggen können?

P.s.: Meinst du diesen Code?
qx($sshpass -p 'most9981' /usr/bin/ssh root\@$host '/usr/bin/lg.srv &' );
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 17 Juni 2016, 18:23:24
Bin es in diesem Post (https://forum.fhem.de/index.php/topic,46557.msg382975.html#msg382975) nochmal komplett durchgegangen, wie der Passwortlose Login funktioniert.
Funktioniert nun!

Die einzige Frage die sich mir nun noch stellt, wie ich mit FHEM meinen Code ausgeführt bekomme.
Mit dem Code alá
qx(ssh admin@10.0.0.10 "/bin/echo mem > /sys/power/state 2>/dev/null")
funktioniert es nicht...

__________________
EDIT
Nochmal alles gecheckt.

Der Login ohne pw funktioniert problemlos.
Ich habe nun ein Script, welches ich auslöse, diese sieht so aus:
#!/bin/bash
username="$1"
hostname="$2"
ssh "$username"@"$hostname" "/bin/echo mem > /sys/power/state 2>/dev/null"
DATE=$(date +%Y.%m.%d)
TIME=$(date +%T)
echo $DATE $TIME "3: QNAP TS-251 in den Ruhemodus versetzen"
exit 0


Über FHEM löse ich mittels dem WOL Modul aus und zwar so:
{system("/opt/fhem/FHEM/qnap.sh admin 10.0.0.10")}

Starten/Ruhezustand funktioniert unter FHEM auch.
Das riesige Problem: FHEM hängt sich nachdem es das NAS in den Ruhezustand schickt komplett auf und ich muss den Pi neu starten.

WORAN kann das bitte liegen???
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 17 Juni 2016, 19:23:27
Super, hast Du toll gemacht. Das ist mein ernst.
Du hast nun also ein Zertifikat angelegt und unter .ssh entsprechend abgelegt. Wohl gemerkt unter .ssh im Homeverzeichniss von fhem User. Meist /opt/fhem/
Es gibt Sonderzeichen welche maskiert werden müssen. Darunter zählt unter anderem das @
Schau Dir mal den Code an welchen Du bei Deinem vorletzten Post unter PS zu stehen hast.
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 17 Juni 2016, 19:26:31
Danke nochmal für deine Antwort!

Vielleicht hat sich mein letzter Edit gerade mit deiner Antwort überschnitten?
Es läuft "quasi" schon.. Schön wäre nur, wenn FHEM nicht danach abschmiert :D


Oder muss ich das auch in dem Bash Skript so handhaben?
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 17 Juni 2016, 19:32:16
Starte das Script mal in der Konsole und schaue ob es durch läuft.
Wenn ja.
Dann probier mal ob Du mit

{ qx(/opt/fhem/FHEM/qnap.sh admin 10.0.0.10) }

besser klar kommst. Das kannst du genau so direkt in der fhem Kommandozeile eingeben.
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 17 Juni 2016, 19:39:27
In der Konsole sieht es dann so aus:
fhem@raspberrypi:~/FHEM$ bash qnap.sh
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-e escape_char] [-F configfile]
           [-I pkcs11] [-i identity_file]
           [-L [bind_address:]port:host:hostport]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-R [bind_address:]port:host:hostport] [-S ctl_path]
           [-W host:port] [-w local_tun[:remote_tun]]
           [user@]hostname [command]
2016.06.17 19:36:15 3: QNAP TVS-463 in den Ruhemodus versetzen


Ist das so in Ordnung?


Wenn ich in FHEM deinen Code ausführe, hängt es sich auch wieder auf.
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 17 Juni 2016, 20:18:24
Ach so. Sorry mein Fehler. Das ist so gar nicht in Ordnung. Hast du im Script was verändert? Gib mal noch mal das Script. Ins Script kommt bitte keine Maskierung des @ mein Fehler.
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 17 Juni 2016, 20:22:35
Das aktuelle Skript sieht so aus

#!/bin/bash
username="$1"
hostname="$2"
ssh "$username"@"$hostname" "/bin/echo mem > /sys/power/state 2>/dev/null"
DATE=$(date +%Y.%m.%d)
TIME=$(date +%T)
echo $DATE $TIME "3: QNAP TVS-463 in den Ruhemodus versetzen"
exit 0


Hab das \ wieder raus genommen.

Habe dann nochmal per Konsole ausgeführt, mit diesem Ergebnis

fhem@raspberrypi:~/FHEM$ bash qnap.sh
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-e escape_char] [-F configfile]
           [-I pkcs11] [-i identity_file]
           [-L [bind_address:]port:host:hostport]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-R [bind_address:]port:host:hostport] [-S ctl_path]
           [-W host:port] [-w local_tun[:remote_tun]]
           [user@]hostname [command]
2016.06.17 20:22:01 3: QNAP TVS-463 in den Ruhemodus versetzen
fhem@raspberrypi:~/FHEM$
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 17 Juni 2016, 20:40:04

#!/bin/bash
username="$1"
hostname="$2"
ssh "$username"@"$hostname" "/bin/echo mem > /sys/power/state 2>/dev/null"
DATE=$(date +%Y.%m.%d)
TIME=$(date +%T)
echo $DATE $TIME "3: QNAP TVS-463 in den Ruhemodus versetzen"
exit 0


Warum codest Du nicht username und hostname hart ein. username muß ja fhem sein, und noch mal unter /opt/fhem/ auf dem pi muß auch der .ssh ordner mit dem Zertifikat liegen.


#!/bin/bash
username="$1"
hostname="$2"
ssh fhem@IP_QNAP '/bin/echo mem > /sys/power/state 2>/dev/null'
DATE=$(date +%Y.%m.%d)
TIME=$(date +%T)
echo $DATE $TIME "3: QNAP TVS-463 in den Ruhemodus versetzen"
exit 0


Bitte anstelle IP_QNAP die tatsächliche ip eingeben. Aber ich denke mal bevor Du irgendwas weiter machst, teste erstmal ob fhem überhaupt ssh zu Deinem QNAP mit Zertifikat kann.


su -s /bin/bash -c ssh fhem@IP_QNAP '/bin/echo mem > /sys/power/state' fhem


Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 17 Juni 2016, 21:24:19
Danke dafür erstmal.

Habe ich jetzt grundsätzlich einen Denkfehler???
Ich logge mich doch aus fhem heraus mittels ssh auf den admin Account auf dem NAS ein und führe so dann das Skript aus!?

So wie du es geschrieben hast, muss ich ja mit dem User fhem auf mein NAS zugreifen und den Code ausführen, was aber ja meiner Meinung nach nicht funktionieren wird. Denn ein fhem Account besteht auf dem NAS ja gar nicht.


Vielleicht werkel ich aber auch schon zu lange an ein und der selben Sache rum ...
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 17 Juni 2016, 21:34:13
Also irgendwie sind wir beide jetzt durcheinander.
So wie das Skript geschrieben ist und auch von Anfang an war, meldet sich das Skript per ssh auf einen Rechner ein und führt doch einen Befehl aus. Das Skript muß also auf dem fhem Server liegen.
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 17 Juni 2016, 21:46:46
Genau, nur du willst dich ja mit "deinem" Skript mit dem User fhem auf das QNAP einloggen, was sich ja widerspricht, da der User auf dem QNAP nicht existiert.
Das Skript liegt auf auf dem fhem Server, klar. Nur das Skript meldet sich mit admin@10.0.0.10 am QNAP an und fhem führt das Skript dann aus.

So ist zumindest meine Logik hinter dem ganzen Chaos :P

Werde mich sonst morgen nochmal dran setzen, eventuell fällt einem dann ja der Fehler auf.
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 17 Juni 2016, 22:00:16
Ich habe Dir ja kein Skript gegeben sondern nur Code damit Du mal testen kannst ob Deine Zertifikatsauthentifizierung als fhem user klappt. also Du Dich im User Profil fhem als admin auf dem QNAP anmelden kannst.

Aber Du hast Recht, hier habe ich mich in der Tat vertan

#!/bin/bash
username="$1"
hostname="$2"
ssh fhem@IP_QNAP '/bin/echo mem > /sys/power/state 2>/dev/null'
DATE=$(date +%Y.%m.%d)
TIME=$(date +%T)
echo $DATE $TIME "3: QNAP TVS-463 in den Ruhemodus versetzen"
exit 0


Muss heißen


#!/bin/bash
ssh admin@10.0.0.10 '/bin/echo mem > /sys/power/state 2>/dev/null'
DATE=$(date +%Y.%m.%d)
TIME=$(date +%T)
echo $DATE $TIME "3: QNAP TVS-463 in den Ruhemodus versetzen"
exit 0


Sorry
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 17 Juni 2016, 22:09:05
Okay, das war ein Missverständnis.
Habe den Code aber so mal in der Konsole ausgeführt mit folgendem Ergebnis:
pi@raspberrypi ~ $ su -s /bin/bash -c ssh fhem@10.0.0.10 '/bin/echo mem > /sys/power/state' fhem
Kein Passworteintrag für Benutzer »fhem@10.0.0.10«

Das scheint nicht zu funktionieren.

Genau so, wie du den Skript-Code (überarbeitet) geschrieben hast, habe ich ihn auch schon bei mir drin.
Ausführen in FHEM lasse ich ihn damit:
attr QNAP shutdownCmd {system("/opt/fhem/FHEM/qnap.sh")}

QNAP fährt in den Ruhezustand, aber die FHEM Oberfläche hängt sich eben auf.
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 17 Juni 2016, 22:45:09

pi@raspberrypi ~ $ su -s /bin/bash -c ssh fhem@10.0.0.10 '/bin/echo mem > /sys/power/state' fhem
Kein Passworteintrag für Benutzer »fhem@10.0.0.10«

Kann ja auch nicht. Du musst ja wirklich admin statt fhem nehmen denn nur admin ist auf dem QNAP als User drauf.


ok das müssen wir mal besser testen.


usermod -s /bin/bash fhem


danach


su fhem


nun solltest Du fhem sein


whoami


sollte fhem sagen

Wenn ja machst Du folgendes

ssh admin@10.0.0.10


nun solltest Du auf dem QNAP sein.
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 17 Juni 2016, 23:05:49
Das habe ich ja quasi schon probiert, was ja funktioniert.

Hatte in sudo nano /etc/passwd
fhem:x:999:20::/opt/fhem:/bin/false auf
fhem:x:999:20::/opt/fhem:/bin/bash geändert, sowie dem User fhem ein Passwort vergeben um mich direkt per ssh einloggen zu können.

Dementsprechend dann eingeloggt auf dem pi als User fhem ssh admin@10.0.0.10 ausgeführt.
Und zack - ich bin ohne Passwortabfrage auf dem QNAP.

Standby funktioniert auf dem QNAP ja, wegen des aufhängen seitens FHEM: Kann es damit zusammenhängen, dass die ssh-Verbindung dann quasi abrupt getrennt wird und FHEM damit nicht klar kommt? Kam mir gerade so in den Sinn...
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 17 Juni 2016, 23:16:13
Lass uns mal bitte kleine Schritte machen und uns ran tasten.

Jetzt machst Du das erst mal wieder rückgangig so das der User pi wieder nur /bin/false als shell hat. dann anmelden am pi als user root und noch mal das hier probieren


su -s /bin/bash -c ssh admin@10.0.0.10 '/bin/echo mem > /sys/power/state' fhem
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 17 Juni 2016, 23:19:53
Sorry, wie genau mach ich das rückgängig?

Quasi fhem Login deaktivieren?
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 17 Juni 2016, 23:23:37
na genau so wie du es mir geschrieben hast.

/etc/passwd und dann aus bash false machen.
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 17 Juni 2016, 23:42:40
Da bekomme ich die Ausgabe

root@raspberrypi ~ $ su -s /bin/bash -c ssh admin@10.0.0.10 '/bin/echo mem > /sys/power/state' fhem
Kein Passworteintrag für Benutzer »admin@10.0.0.10«
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 18 Juni 2016, 06:55:40
Guten Morgen,

Ok dann lassen wir das erstmal. Pass mal Dein Script bitte korrekt an. Also mit admin und IP.

Dann machst Du einfach

su -s /bin/bash -c /Pfad/zum/Skript fhem


Hier sollte auf jeden was passieren
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 18 Juni 2016, 10:32:26
Moin,

das Script sieht so aus:
#!/bin/bash
ssh admin@10.0.0.10 '/bin/echo mem > /sys/power/state 2>/dev/null'
DATE=$(date +%Y.%m.%d)
TIME=$(date +%T)
echo $DATE $TIME "3: QNAP TVS-463 in den Ruhemodus versetzen"
exit 0


Den Befehl für die Konsole so ausgeführt:
pi@raspberrypi ~ $ su -s /bin/bash -c /opt/fhem/FHEM/qnap.sh fhem
Passwort:
ssh: connect to host 10.0.0.10 port 22: No route to host
2016.06.18 10:29:45 3: QNAP TVS-463 in den Ruhemodus versetzen


NAS fährt in den Ruhemodus und FHEM stürzt NICHT ab! :)

Allerdings, wie du siehst, wurde ein Passwort eingefordert. Da bin ich mir nicht sicher wieso.
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 18 Juni 2016, 11:09:16
Fhem kann ja auch nicht abstürzen. Da das Script ja nicht aus fhem heraus aufgerufen wurde.
Hast Du das Passwort eingegeben und dann ist das Script weiter gelaufen oder stand nur da Passwort eingeben und das Script lief dennoch bis zum Schluß?
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 18 Juni 2016, 11:11:01
Ja, musste das Passwort eingeben und dann ist das Script durchgelaufen.
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 18 Juni 2016, 11:15:29
Zitat von: Breaked am 18 Juni 2016, 10:32:26
Moin,

das Script sieht so aus:
#!/bin/bash
ssh admin@10.0.0.10 '/bin/echo mem > /sys/power/state 2>/dev/null'
DATE=$(date +%Y.%m.%d)
TIME=$(date +%T)
echo $DATE $TIME "3: QNAP TVS-463 in den Ruhemodus versetzen"
exit 0


Den Befehl für die Konsole so ausgeführt:
pi@raspberrypi ~ $ su -s /bin/bash -c /opt/fhem/FHEM/qnap.sh fhem
Passwort:
ssh: connect to host 10.0.0.10 port 22: No route to host
2016.06.18 10:29:45 3: QNAP TVS-463 in den Ruhemodus versetzen


NAS fährt in den Ruhemodus und FHEM stürzt NICHT ab! :)

Allerdings, wie du siehst, wurde ein Passwort eingefordert. Da bin ich mir nicht sicher wieso.

Ich sehe gerade das ist nicht das ssh Passwort sondern das Passwort von FHEM User. Du hast den Befehl als Pi User ausgeführt. Bitte wiederhole das mal und melde dich als root an und dann noch mal den Befehl aus führen.
Aussersem konnte er wohl den Host nicht finden. Aber das kann sein als er das Teil schon runterfahren lassen hat.

Also jetzt noch mal voll Konzentrieren.
Auf dem fhem-pi als User root anmelden.
Den Befehl su -c bla bla aus führen. Und schauen was passiert.
Wir sind Nahe dran denke ich.


Grüße
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 18 Juni 2016, 11:21:48
Alles klar, hab ich gemacht.

root@raspberrypi:~# su -s /bin/bash -c /opt/fhem/FHEM/qnap.sh fhem

Das NAS geht in den Ruhemodus, das Script bleibt aber augenscheinlich hängen.
Der Cursor springt nur in die nächste Zeile und bleibt dort hängen.

Nach einigen Sekunden kommt

root@raspberrypi:~# su -s /bin/bash -c /opt/fhem/FHEM/qnap.sh fhem
ssh: connect to host 10.0.0.10 port 22: Connection timed out
2016.06.18 11:20:46 3: QNAP TVS-463 in den Ruhemodus versetzen
root@raspberrypi:~#


Scheinbar wirklich das Problem was ich vermute, dass sich das Script aufhängt, da die ssh Verbindung unterbrochen wird?
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 18 Juni 2016, 11:29:29
Und jetzt weißt Du auch wieso fhem hängt. Das Script läuft nicht durch und fhem oder besser Perl wartet auf eine Rückmeldung.
Schritt eins erledigt. Das Problem erkannt.

So also was ist nun unser Problem. Ganz klar, unser Script ruft einen Befehl auf und dieser jagt das Gerät  in den Ruhemodus ohne das das Script oder ssh ordentlich beenden kann.
Nun müssen wir das ganze etwas anderes machen.

Wir schicken unseren Aufruf zum runterfahren in den Hintergrund


ssh admin@10.0.0.10 '/bin/echo mem > /sys/power/state 2>/dev/null &'


Dadurch das wir uns mit Zertifikat anmelden sollte es einfach so durch rennen
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 18 Juni 2016, 11:38:19
Okay, hab ich mir gedacht.

Das führe ich dann jetzt erstmal wieder in der Konsole aus, oder in FHEM?
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 18 Juni 2016, 12:07:48
Erstmal alles nur Konsole. Das mit fhem kommt ganz ganz zum schluß
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 18 Juni 2016, 12:19:28
root@raspberrypi:~# ssh admin@10.0.0.10 '/bin/echo mem > /sys/power/state 2>/dev/null &'
The authenticity of host '10.0.0.10 (10.0.0.10)' can't be established.
RSA key fingerprint is 1b:e3:06:03:27:b1:b4:e5:0c:05:99:27:c9:66:aa:52.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.10' (RSA) to the list of known hosts.
admin@10.0.0.10's password:
root@raspberrypi:~#


Musste Passwort eingeben, danach sehe ich nichts mehr in der Konsole.
NAS geht in den Ruhemodus.
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 18 Juni 2016, 12:24:08
Ok ich merke schon. Ich muss ausführlicher schreiben.  ;D

Du möchtest bitte Dein Script so anpassen das sich die ssh Zeile so ändert das am Ende ein & steht. So wie ich es oben geschrieben habe. Dann startest Du bitte mit dem bekannten su Befehl so wie die ganze Zeit schon das Script.

Ok?

Grüße
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 18 Juni 2016, 12:32:31
Script angepasst ;D

#!/bin/bash
ssh admin@10.0.0.10 '/bin/echo mem > /sys/power/state 2>/dev/null &'
DATE=$(date +%Y.%m.%d)
TIME=$(date +%T)
echo $DATE $TIME "3: QNAP TVS-463 in den Ruhemodus versetzen"
exit 0


Dann ausgeführt
root@raspberrypi:/opt/fhem/FHEM# su -s /bin/bash -c /opt/fhem/FHEM/qnap.sh fhem
2016.06.18 12:30:44 3: QNAP TVS-463 in den Ruhemodus versetzen
root@raspberrypi:/opt/fhem/FHEM#


Keine Passwortabfrage, NAS geht aus.
So richtig gemacht? :P :-[

Bedeutet doch, dass ich es so jetzt über FHEM testen kann, richtig richtig? :)
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 18 Juni 2016, 12:35:56
Sehr gut. Und nun können wir in der Tat in Fhem testen.

Aber bitte richtig. So das wir später auch noch mit Rückgabewerten arbeiten können. Also


{ qx(hier den Script Aufruf rein) }


Das so bitte in die fhem eingabekonsole vom Web eingeben.
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 18 Juni 2016, 12:36:19
OHNE SU BITTE.

Nur

/opt/fhem/FHEM/qnap.sh
Titel: Antw:QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 18 Juni 2016, 12:46:14
ERSTE SAHNE! 8)

Läuft!
Einen ganz, ganz großen Dank an dich!

P.S.: Auch sehr praktisch, wenn man homebridge nutzt und den Server jetzt auch aus der Ferne mit Siri ein/ausschalten kann 8)
Titel: Antw:[ERLEDIGT] QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 18 Juni 2016, 12:51:50
Na siehste. Und weil wir es so richtig richtig machen wollen und Du vielleicht auch noch was lernen möchtest. Schreiben wir uns noch ein zwei Hilfen und Erleichterungen. Kann man auch später immer noch gebrauchen.

Muss jetzt aber erstmal mit meiner Tochter Mathe machen. Melde mich später noch mal.
Titel: Antw:[ERLEDIGT] QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 18 Juni 2016, 13:09:21
Alles klar, habe schonmal versucht es verständlich in meinem ersten Post für die Nachwelt zu formulieren :)
Titel: Antw:[ERLEDIGT] QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 18 Juni 2016, 13:19:27
Nimm mal bitte den Teil mit der Änderung der Shell und dem Vergeben eines Passwortes für den User fhem raus. Das brauch man nicht. Das war nur zum testen. Das ist sogar nicht so gut wenn das so gemacht wird ohne Wissen was da passiert.
Titel: Antw:[ERLEDIGT] QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 18 Juni 2016, 13:23:21
Man muss aber doch mit dem User fhem die Keys erstellen?

Ansonsten markiere mir mal bitte, was du genau rausnehmen würdest.
Titel: Antw:[ERLEDIGT] QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 18 Juni 2016, 13:31:52
So nun zum Lernteil.

Man kann sich für ssh eine config Datei anlegen. So muß man den ganzen ssh Befehl nicht komplett aufrufen.
Für den normalen gebrauch von ssh sieht das ganze ja so aus

ssh user@host


wenn man nun noch mit Zertifikaten arbeitet und nicht den Standard nimmt wird es schon mehr

ssh user@host -i /home/user/identityfile


also machen wir folgendes. Wir legen eine Config Datei an
Unter .ssh legen wir eine Datei namens config an

.ssh/config


Die Datei füllen wir mit folgendem Inhalt


Host irgendeinname
        Hostname ip-zielhost
        User loginuser
        Port SSHPORT
        ServerAliveInterval 30         Verbindungsoptionen
        ServerAliveCountMax 120  hier auch


In Deinem Fall für den QNAP Zugang wäre es

Host qnap
        Hostname 10.0.0.10
        User admin
        ServerAliveInterval 30
        ServerAliveCountMax 120


Das sollte auch schon reichen. Nun das File Speichern und dann würde unser ssh Aufruf für den QNAP in Zukunft so aussehen

ssh qnap


Macht Also für den ssh Aufruf in Deinem Script folgende Änderung

ssh qnap '/bin/echo mem > /sys/power/state 2>/dev/null &'




Grüße
Titel: Antw:[ERLEDIGT] QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 18 Juni 2016, 13:34:24
Zitat von: Breaked am 18 Juni 2016, 13:23:21
Man muss aber doch mit dem User fhem die Keys erstellen?

Ansonsten markiere mir mal bitte, was du genau rausnehmen würdest.

Nein muss man nicht. Man muss einfach nur EINEN Key erstellen. Diesen muß man dann entsprechend verteilen. Im Key steht nicht drin für wen der Key ist. Man muß aber entsprechend den benötigten Usern den Key geben. Also hättest Du auch mit dem user pi den Key erstellen können und ihn dann in den Ordner von fhem /opt/fhem/ssh/ kopieren müssen. Natürlich die Rechte des Keyfiles noch anpassen. Das wäre auch gegangen.
Titel: Antw:[ERLEDIGT] QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 18 Juni 2016, 13:46:54
Danke nochmal für den Lernteil.
So, wie es jetzt ist, finde ich es aber auch in Ordnung. Da kann ruhig admin@10.0.0.10 stehen :)

Hab den ersten Post nochmal geändert, kann man es so lassen?
Titel: Antw:[ERLEDIGT] QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 18 Juni 2016, 13:51:24
So und weiter geht es.
Damit wir in Zukunft nicht wieder einen Hänger bekommen und unser Skript nicht einfach schreibt QNAP TVS-463 in den Ruhemodus versetzen obwohl die ssh verbindung schon nicht geklappt hat, machen wir filgendes
#!/bin/bash -e

#!/bin/bash -e
ssh admin@10.0.0.10 '/bin/echo mem > /sys/power/state 2>/dev/null &'
DATE=$(date +%Y.%m.%d)
TIME=$(date +%T)
echo $DATE $TIME "3: QNAP TVS-463 in den Ruhemodus versetzen"
exit 0


Das bedeutet das sobald ein Fehler bei der Kommandoverarbeitung auftritt das Skript mit dem letzten Kommandoverarbeitungsfehlermeldung abgebrochen wird.
Das wiederum können wir nutzen um zum Beispiel in FHEM das ganze Weiterverarbeiten zu können.
Titel: Antw:[ERLEDIGT] QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 18 Juni 2016, 13:51:58
Zitat von: Breaked am 18 Juni 2016, 13:46:54
Hab den ersten Post nochmal geändert, kann man es so lassen?

Ich denke mal schon
Titel: Antw:[ERLEDIGT] QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 18 Juni 2016, 13:53:31
So ich denke das reicht erstmal. Und nun wünsche ich Dir viel Spaß mit Deinem QNAP   ;D
Bis bald.


Grüße
Titel: Antw:[ERLEDIGT] QNAP NAS herunterfahren/standby
Beitrag von: Bartimaus am 24 Juni 2017, 11:22:48
Moin,

ich muss das nochmal ausbuddeln. Nachdem das herunterfahren 2 Monate tadellos geklappt hat, bekam ich gestern folgende Meldung im Log nachdem ich das QNAP per remote schlafenlegen wollte:

2017.06.23 22:17:19.449 3: [Mediaserver]2017.06.23 22:17:19 3: QNAP TS-653 in den Ruhemodus versetzen
Host key verification failed.
RSA host key for 192.168.xxx.x has changed and you have requested strict checking.
  remove with: ssh-keygen -f "/opt/fhem/.ssh/known_hosts" -R 192.168.xxx.x
Offending RSA key in /opt/fhem/.ssh/known_hosts:1
Add correct host key in /opt/fhem/.ssh/known_hosts to get rid of this message.
Please contact your system administrator.
xx.xx.xx.x.xx.
The fingerprint for the RSA key sent by the remote host is
It is also possible that a host key has just been changed.
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2017.06.23 22:17:19.225 3: [Mediaserver] shutdownCmd: { qx("/opt/fhem/FHEM/qnap.sh") } executed
2017.06.23 22:17:19.036 3: [Mediaserver] set Mediaserver off


Ich muss dazu sagen, das ich das QNAP vor ein paar Tagen komplett neu gestartet habe. Geht dabei der Fingerprint verloren ?
Sonstige Konfigänderungen wurden weder an FHEM/Banana noch am QNAP vorgenommen. Von aussen ist der Zugriff lediglich per VPN möglich.
Titel: Antw:[ERLEDIGT] QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 24 Juni 2017, 11:32:38
Entweder Dateisystem beschädigt auf dem NAS oder der privat Key ist weg. Wie auch immer. roll einfach den Key auf dem NAS noch mal neu aus. Ich hoffe doch schwer Du hast ihn noch. Wenn nicht, neu erstellen.
Titel: Antw:[ERLEDIGT] QNAP NAS herunterfahren/standby
Beitrag von: Bartimaus am 24 Juni 2017, 12:07:09
Moin,

bin ich gerade dabei (versuche es zumindest).
Titel: Antw:[ERLEDIGT] QNAP NAS herunterfahren/standby
Beitrag von: Bartimaus am 24 Juni 2017, 12:25:29
Mist, klappt nicht.

Was versuche ich:
per ssh auf QNAP einloggen
ssh-keygen -t rsa –C admin@IP-QNAP

erfolgreich angelegt

dann auf Banana per Konsole:
su fhem
ssh-keygen -t rsa -C fhem@IP-Banana (->Pfad /opt/fhem/.ssh/id_rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub admin@IP-QNAP

Wenn ich dann das QNAP aus FHEM heraus (per Skript) in den Ruhemodus schicken will, bekomme ich die Fehlermeldung im Log: HOST verfification failed

Bislang hatte das so funktioniert. Skript wurde nicht geändert. Ich meine das auch so vor ca. 2 Monaten eingerichtet zu haben. Hatte mir damals alle Schritte notiert.

Was fehlt denn noch oder was mache ich falsch ?




Titel: Antw:[ERLEDIGT] QNAP NAS herunterfahren/standby
Beitrag von: CoolTux am 24 Juni 2017, 12:37:24
Wieso legst Du zwei unterschiedliche Keyfiles an? Einfach auf den fhem Server ein Keyfile anlegen und signieren. Dann hast Du ein privaten und ein öffentlichen. Den privaten kopierst du auf das nas und den öffentlichen behälst du für den fhem server.
Schau noch mal ob du im Netz eine Anleitung zum erstellen von keyfiles und gegensignieren findest.
Titel: Antw:[ERLEDIGT] QNAP NAS herunterfahren/standby
Beitrag von: Bartimaus am 24 Juni 2017, 12:50:23
Danke. Ich hatte mich an die Anleitung aus dem Eingangsposting gehalten. (Mit dem Unterschied das ich das alles in der Konsole vom User "fhem" aus gemacht habe.)

Ich habe mich jetzt nochmal per Konsole@Banana mit ssh auf dem Qnap angemeldet. Dabei den Key bestätigt. Dann wurde auch die Datei "known_hosts" aktualisiert.
Danach hat es geklappt.
Titel: Antw:[ERLEDIGT] QNAP NAS herunterfahren/standby
Beitrag von: Breaked am 24 Juni 2017, 12:54:35
Ist denn an der Anleitung aus dem ersten Post etwas falsch?
Dann würde ich es gerne ändern, damit nicht noch jemand damit Probleme hat.
Titel: Antw:[ERLEDIGT] QNAP NAS herunterfahren/standby
Beitrag von: Bartimaus am 24 Juni 2017, 13:06:59
Ich bin nicht so vermessen zu sagen das das falsch ist, nur bei mir hatte es damit auf Anhieb nicht geklappt.

Was bei mir noch fehlte war das das ganze nur funktioniert, wenn man das mit dem User fhem macht.
Hierzu habe ich mich an diese Anleitung gehalten: https://forum.fhem.de/index.php/topic,46557.msg382975.html#msg382975

Und wie gesagt, als User fhem auf qnap von der Konsole aus einmalig anmelden: "ssh admin@IP-QNAP" und Key bestätigen.