QNAP-NAS per FHEM runterfahren

Begonnen von Bartimaus, 01 Oktober 2014, 20:14:32

Vorheriges Thema - Nächstes Thema

Wernieman

Ich würde mit direkten Pfaden arbeiten:
/opt/fhem/shutdown_qnap.sh

Aber OHNE den Punkt ".", den Du sonst immer angibst/verwendest!
- 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

Markus

Ich möchte mich nochmals bedanken!
Meine NAS fährt jetzt per fhem runter so wie sie soll ;D
mein skript hab ich geändert weil ich über putty immer das Passwort eingeben musste und das mit fhem nicht Funktionierte...
hier noch das skript, unter linux selber schreiben nicht kopieren! sonst geht es euch wie mir ;)

shutdown_qnap.sh
#!/bin/sh
username="$1"
hostname="$2"
password="$3"
sshpass -p "$password" ssh "$username"@"$hostname" /sbin/poweroff

exit 0


Aufruf aus FHEM:
{system("/opt/fhem/shutdown_qnap.sh username ip_adresse passwort")}

Gruß Markus
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

Wernieman

Mach Dich bitte mal schlau wegen ssh und Keyauthentifizierung. Es ist NICHT sinnvoll, ein ssh per Passwortübergabe zu starten. Das Passwort ist ziemlich einfach (für jeden User) aus der prozessliste rauszufinden.

Auch solltest Du nach den rechten Deiner Datei gucken. Sie sollte am besten nur fhem gehören und nur für fhem lese (und ausführ) rechte haben.
z.B.
https://www.debian-administration.org/article/530/SSH_with_authentication_key_instead_of_password
https://www.thomas-krenn.com/de/wiki/OpenSSH_Public_Key_Authentifizierung_unter_Ubuntu
Und noch diverse andere
- 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

Markus

Danke ich glaub da ist mir der Aufwand zu gross ich hab jetzt in der nas eingestelt das nur Geräte mit einer bestimmten ip Adresse darauf zugreifen dürfen und Zugriff aus dem Internet kommt natürlich auch nicht in frage...

Gruß Markus
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

Wernieman

Es ist eigentlich trivial ... eigentlich fast nur "copy&paste"
Du kannst es auch parallel zur jetzigen Lösung einrichten und, wenn es funktioniert, umschalten.

Deine Lösung ist ein Spezialfall, Key-Login ist der "Industriestandart".
- 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

slupus

Hallo zusammen,
bei mir möchte es leider nicht klappen. Folgendes habe ich gemacht (als User pi auf dem Raspberry):
sudo apt-get install sshpass
sudo touch /opt/fhem/FHEM/shutdownNAS.sh && sudo chown -R fhem /opt/fhem/ && sudo chmod +x /opt/fhem/FHEM/shutdownNAS.sh

sudo nano /opt/fhem/FHEM/shutdownNAS.sh

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


Diese Script kann ich auf dem Raspberry mit
/opt/fhem/FHEM/shutdownNAS.sh USER HOST PWD
ausführen und das NAS geht in den Ruhemodus.
Auch über die FHEM Oberfläche lässt sich das Script ausführen, die Logausgabe erscheint im FHEM Log, doch das NAS geht nicht in den Ruhemodus.
{system('/opt/fhem/FHEM/shutdownNAS.sh USER HOST PWD)}
FHEM hat folglich die Rechte, das Script auszuführen, jedoch scheint der Befehl nicht am NAS anzukommen. Hat jemand eine Idee, woran das liegen könnte oder habe ich etwas übersehen?

Den Einwand von Wernieman finde ich gut, also habe ich diese Anleitung befolgt.
Für diesen Test habe ich ein zweites Script angelegt:
sudo touch /opt/fhem/FHEM/shutdownNAS2.sh && sudo chown -R fhem /opt/fhem/ && sudo chmod +x /opt/fhem/FHEM/shutdownNAS2.sh
sudo nano /opt/fhem/FHEM/shutdownNAS2.sh
#!/bin/bash
username="$1"
hostname="$2"
ssh "$username"@"$hostname" "echo mem > /sys/power/state"
DATE=$(date +%Y.%m.%d)
TIME=$(date +%T)
echo $DATE $TIME "3: QNAP TS-251 in den Ruhemodus versetzen"
exit 0

Mit dem User pi kann ich mich ohne Password auf dem NAS anmelden und das wie folgt ausführen:
/opt/fhem/FHEM/shutdownNAS2.sh USER HOST
Aus FHEM heraus funktioniert dies nicht:
{system('/opt/fhem/FHEM/shutdownNAS2.sh USER HOST')}
Host key verification failed.

Das macht für mich Sinn, da ich den Key für den pi User angelegt habe.
Wie kann ich den Key auch für den FHEM User anlegen?

Vermutlich kann ich mit dieser Info auch das obige Problem lösen.
Ich habe zwar den gesamten Thread gelesen, allerdings weiß ich nicht, wie ich mich mit su – fhem anmelden kann, da ich das Passwort nicht kenne und bisher auch noch nie benötigt habe.

Grüße suelle

Wernieman

also ....

1. um ein Passwort zu ändern gibt es passwd. Als root kannst Du auch passwörter für andere user ändern.
sudo passwd fhem

Und .. typisch unix gibt es auch einen anderen weg um zu fhem zu werden .. über root
su - root
su - fhem

root darf zu jedem User wechseln, ohne Passwortabfrage. Ich mache dieses immer beim testen, da es mit Absicht bei einigen "Usern" kein Passwort und damit Einlogmöglichkeit gibt (Stichwort Sicherheit)

2. Bezüglich ssh-Key
a) Du kannst einfach das Komplette .ssh-Verzeichnis Deines Users pi ins home von user fhem kopieren und dann die Berechtigungen Anpassen
- Das Verzeichnis/Dateien muß dem User fhem gehören
- Nur der darf die Dateien lesen (dürfen)

b)  Du machst für den user fhem einen neuen key. Ich würde dieses wählen, aber viele Wege führen nach Rom ..

jetzt solltest Du weiter kommen? oder brauchst Du noch einen "schups"?

(P.S. ich hoffe, Du verstehst meinen Lockeren Ton .. es ist Freitag!!! und dann eine Woche Urlaub!!!! *griiins*)
- 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

slupus

Vielen Dank, du hast mir sehr geholfen!

Mir war nicht bewusst, dass unter Raspbian für den User root kein Passwort hinterlegt wird. Nach der Anlage konnte ich mich als root anmelden. Das wechseln zum User fhem funktionierte nicht, allerdings konnte ich das Problem auch lösen: In der /etc/passwd ist hinterlegt, dass sich der User fhem nicht anmelden darf. Nachdem ich auch das geändert hatte, konnte ich mit dem User fhem einen ssh key erzeugen. Die von dir beschriebene Lösung 2a halte ich ebenfalls für falsch, deswegen 2b.
Nun läuft das Script und versetzt mein NAS wie gewünscht in den Ruhemodus.

Allerdings habe ich noch eine Verständnisfrage:
Du hast lapidar geschrieben, ich kann das Passwort für den User fhem ändern. Wird dieses von FHEM nicht benötigt? Ich wollte das Risiko nicht eingehen, FHEM dadurch lahmzulegen.

Vielen Dank und einen erholsamen Urlaub...meiner ist jetzt rum  :(

Wernieman

Nein, fhem braucht es nicht. Der init-Prozess läut unter root und kann deshalb Problemlos ein Proggi unter einem anderen User starten.

Und wegen einloggen: hatte vergessen, das fhem im standard keine loginshell hat. Egal ob über root oder passwd muß dieses dafür gesetzt sein.  Wenn Du sicherheit willst, anschließend zurücksetzen, auf /bin/false oder /bin/nologin o.Ä.
- 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

slupus


Wernieman

Warum installiert Du in der Anleitung sshpass?
sudo apt-get install sshpass
- 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

slupus

Ich war mir nicht mehr sicher, ob es tatsächlich benötigt wird, deshalb habe ich es mitaufgenommen.
Wenn du weißt, dass es nicht benötigt wird, kann es auch herausgenommen werden.

Wernieman

Das Programm wird verwendet, um sich per Passwort (automatisch böse) per ssh anzumelden. Da Du aber ssh-keys verwendest, ist dieses nicht nötig.

Was Du meinst ist "openssh-client", kenne aber kein Linux, welchen den nicht automatisch installiert hat.
- 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

slupus

Danke für die Erklärung, habe die Wiki Seite angepasst.