[Gelöst] Remote SSH Script von fhem z.B. via WOL e. QNAP zum Schlafen schicken

Begonnen von AHA1805, 02 Januar 2016, 00:08:53

Vorheriges Thema - Nächstes Thema

AHA1805

Hallo,

ich habe folgendes Problem.

Ich möchte mit dem WOL Modul meinen QNAP starten und in sleep schicken.

Das Aufwecken funktioniert super
Das in S3 schicken funktioniert auch super wenn ich das Script von der root console ausführe
Code: [Auswählen]
#!/bin/bash
echo "Starten des Scriptes" >/opt/fhem/log/test.log
sshpass -p password! ssh admin@tvs663 "/bin/echo mem > /sys/power/state 2>/dev/null"&
echo "Ende des Scriptes 3" >>/opt/fhem/log/test.log

exit

Versuche ich jedoch das script via fhem zu starten schreibt er zwar die beiden Zeilen in das test.log aber der QNAP macht nix und bleibt an.

Habe schon folgende Versuche durchgeführt.
Direkt im dem WOL Device mit
attr TVS663 shutdownCmd "/opt/fhem/addOns/tvs663_s3.sh"
In der FHEM Shell mit
#!/bin/bash
echo "Starten des Scriptes" >/opt/fhem/log/test.log
sshpass -p password! ssh admin@tvs663 "/bin/echo mem > /sys/power/state 2>/dev/null"&
echo "Ende des Scriptes 3" >>/opt/fhem/log/test.log

exit


Aber Irgendwie will das Tool sshpass nicht von fhem aus gestartet werden wollen :-(
Die Rechte für das sshpass Tool sind auch auf x für alle Gruppen.

In der /etc/group habe ich fhem auch schon in x gruppen eingetragen, aber im Moment ist nur noch ein planlosen rumstochern :-(
Ich doktere jetzt schon seit Stunden rum und komme auf keine Nennen.

Wahrscheinlich ist es eine Rechte Problem, aber ich komme einfach nicht drauf wo ich noch rumdrehen könnte,
und ich wollte fhem eigentlich nicht mit root Rechten starten.

Vielleicht hat jemand eine Idee

Schöne Grüße
Hanns
AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)

AHA1805

Hallo,

ich habe es folgendermaßen gelöst.
Mit dieser Lösung benötigt man auch das Tool sshpass nicht mehr, und man muss in keinen Scripten Kennwörter speichern

Auf dem QNAP eine Public Key erzeugt
ssh-keygen -t rsa –C admin@tvs663.fritz.box

Dann auf dem Bananapi der fhem USER für einen passwortlosen login eingestellt ist, muss man das ändern um sich mit fhem einloggen zu können.
sudo nano /etc/passwd
fhem:x:999:20::/opt/fhem:/bin/false
auf /bin/bash ändern und speichern
fhem:x:999:20::/opt/fhem:/bin/bash

Dann fhem für den Login aktivieren und ein Kennwort eingeben
sudo passwd fhem

mit fhem einloggen und RSA Key erzeugen
login fhem
ssh-keygen -t rsa -C fhem@bpi.fritz.box
Auf das Zielsystem kopieren
ssh-copy-id -i ~/.ssh/id_rsa.pub admin@tvs663.fritz.box

Jetzt sollte der Login ohne Kennwort klappen.
Jetzt den Login wieder deaktivieren.
sudo nano /etc/passwd

fhem:x:999:20::/opt/fhem:/bin/false

Jetzt noch das Script angepaßt auf.
#!/bin/bash
d=`date +%Y-%m-%d-%H-%M`
echo "$d TVS663 in S3 schicken...." >>/opt/fhem/log/test.log
ssh admin@tvs663.fritz.box "/bin/echo mem > /sys/power/state 2>/dev/null"&
echo "$d TVS663 in S3 geschickt." >>/opt/fhem/log/test.log
exit


Und schon kann das WOL Modul den Server aufwecken und auch wieder in den S3 schicken

Schöne Grüße
Hannes
AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)

Inputsammler

Hey Hannes,

Genau sowas habe ich gesucht um meinen Qnap mit FHEM zu steuern.
Das WOL modul funktioniert sehr gut.

Das script würde auch gut funktionieren wenn man es als root,admin oder fhem user startet.

aber leider bekomme ich die folgende Fehlermeldung.

2016.01.10 00:39:04 3: [WOL_Ts470] set WOL_Ts470 off
2016.01.10 00:39:04 3: [WOL_Ts470] shutdownCmd: /opt/fhem/SCRIPT/ts470_s3.sh executed
2016.01.10 00:39:04 3: [WOL_Ts470]Unknown command /opt/fhem/SCRIPT/ts470_s3.sh, try help.
2016.01.10 00:39:10 3: [WOL_Ts470] set WOL_Ts470 refresh


meine Einstellungen sind
define WOL_Ts470 WOL 00:08:9B:DB:E9:45 192.168.27.40
attr WOL_Ts470 devStateIcon on:GPA_qnap@GREEN off:GPA_qnap
attr WOL_Ts470 room UG_NAS
attr WOL_Ts470 shutdownCmd /opt/fhem/SCRIPT/ts470_s3.sh


Ergänzung:
mit einen Dummy und einen notify funktioniert es aber das will ich nicht  :-[
define S3_TS470 dummy
attr S3_TS470 room UG_NAS
attr S3_TS470 webCmd on:off
define S3_TS470_notify notify (S3_TS470:on) {{fhem("set S3_TS470 off")}{system('/opt/fhem/SCRIPT/ts470_s3.sh&');;}}
attr S3_TS470_notify room UG_NAS

Gruß Gerd
Rpi's und Bpi's und Hw von Dirk und locutus
CCU2,F20,Ks300,1-Wire,Homematic usw ...
vitodens 300 & IstrkrM372 auslesen über USB und FHEM
RUHE IN FRIEDEN AHA1805 RIP Mallorca +29.08.16
I miss you and your Family H.H.L.L.

AHA1805

Hallo Gerd,

versuche es mal mit
attr WOL_Ts470 shutdownCmd "/opt/fhem/SCRIPT/ts470_s3.sh"

Gruß Hannes

Gesendet von meinem SM-T715 mit Tapatalk

AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)

CoolTux

Hallo Hannes,


sshpass -p password! ssh admin@tvs663 "/bin/echo mem > /sys/power/state 2>/dev/null"&


Das hätte auch geklappt wenn Du unterhalb des fhem Homeverzeichnis, meist /opt/fhem in das Verzeichnis .ssh die Passphrase Datei hinterlegt hättest. Dazu einmallig als irgendeinUser eine ssh Session aufbauen, Passphrase bestättigen, die Passphrase datei vom User irgendeinUser in das .ssh Verzeichnis vom fhem User kopieren. Fertig


;D


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

AHA1805

Zitat von: CoolTux am 15 Januar 2016, 07:26:18
Hallo Hannes,


sshpass -p password! ssh admin@tvs663 "/bin/echo mem > /sys/power/state 2>/dev/null"&


Das hätte auch geklappt wenn Du unterhalb des fhem Homeverzeichnis, meist /opt/fhem in das Verzeichnis .ssh die Passphrase Datei hinterlegt hättest. Dazu einmallig als irgendeinUser eine ssh Session aufbauen, Passphrase bestättigen, die Passphrase datei vom User irgendeinUser in das .ssh Verzeichnis vom fhem User kopieren. Fertig


;D


Grüße
Hallo CoolTux,

danke wieder was gelernt.
Das werde ich mal versuchen, weil es mich interessiert.

Wo findet man so etwas, oder muss man das wissen wenn man mit Linux arbeitet?

Grüße

Gesendet von meinem SM-T715 mit Tapatalk

AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)

CoolTux

Man kann sowas immer nachlesen. Entweder im Web oder durch "man ssh".
Ansonsen halt bisschen kombinieren. Alles und jedes unter Linux wird User getrennt behandelt. Wenn Du dich als normaler User auf einem SSH Server anmeldest bekommst Du doch so eine Meldung über die Passhphrase welche Du bestättigen musst.
Die selbe Meldung bekommt der User fhem auch wenn Du fhem das ganze machen lässt. Nur kann hier keiner was bestättigen, weil die Ausgabe nicht umgeleitet wird. Du musst also entweder Dich einmalig als fhem User mit Konsole anmelden und bestättigen, oder nimmst eine fertig bestättigte Passphrase und kopierst sie in das .ssh Verzeichniss vom fhem User. Rechte der Passphrasedatei nicht vergessen an zu passen chown fhem:root oder so.
Ich gebe zu sowas ist nicht Einsteiger sondern schon speziell. Daher habe ich es Dir auch gerne mit auf dem Weg gegeben    ;D.
Eine Passwortlose Authentifizierung mit Hilfe von Zertifikaten finde ich aber auch viel besser. Ich achte allerdings darauf das ich nie direkt als root die Befehle ausführe. Ich habe einen User remotecmd auf den Zielsystemen, dieser steht in der sudoers datei drin und zwar nur mit der Erlaubnis für bestimmste selbstgeschriebene Scripte. So kann fhem z.B. meine selbstgeschriebene Firewall steuern und verwalten. WhatsApp und Handyspiele der Kinder werde so auf bestimmte Zeiten eingeschränkt.




Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Inputsammler

Hallo zusammen,

Also Danke für euere Unterstützung.
Nun funktioniert alles wie ich will.
Info wie ich es gemacht habe .

sudo apt-get install sshpass

Zitat von: AHA1805 am 02 Januar 2016, 00:17:16
Dann auf dem Bananapi der fhem USER für einen passwortlosen login eingestellt ist, muss man das ändern um sich mit fhem einloggen zu können.
sudo nano /etc/passwd
fhem:x:999:20::/opt/fhem:/bin/false
auf /bin/bash ändern und speichern
fhem:x:999:20::/opt/fhem:/bin/bash

Dann fhem für den Login aktivieren und ein Kennwort eingeben
sudo passwd fhem

in fhem einloggen
login fhem

Im Benutzerorder von fhem .sshpass an, welche das Passwort enthält.
nano ~/.sshpass
Nun sorge ich dafür, das lediglich der aktive Benutzer (fhem) diese Datei lesen und schreiben darf:
chmod 0600 ~/.sshpass
Jetzt kann NUR fhem diese Datei verwenden, alle anderen Nutzer haben dazu keine Berechtigung. Ein kurzer Test, ob die Übergabe des Passwortes funktioniert:
sshpass -f ~/.sshpass ssh admin@ts470.fritz.box 'uptime'

Zitat von: AHA1805 am 02 Januar 2016, 00:17:16
Jetzt den Login wieder deaktivieren.
sudo nano /etc/passwd

fhem:x:999:20::/opt/fhem:/bin/false
cfg
define WOL_Ts470 WOL 00:08:9B:DB:E9:45 192.168.27.40
attr WOL_Ts470 devStateIcon on:GPA_qnap@GREEN off:GPA_qnap
attr WOL_Ts470 room UG_NAS
attr WOL_Ts470 shutdownCmd "/opt/fhem/SCRIPT/ts470_s3.sh"


ts470_s3.sh
#!/bin/bash
d=`date +%Y-%m-%d-%H-%M`
echo "$d TS470 in S3 schicken...." >>/opt/fhem/log/ts470.log
sshpass -f ~/.sshpass  ssh admin@ts470.fritz.box '/bin/echo mem > /sys/power/state 2>/dev/null'&
echo "$d TS470 in S3 geschickt." >>/opt/fhem/log/ts470.log
exit


Danke nochmals.
Gruß Gerd
Rpi's und Bpi's und Hw von Dirk und locutus
CCU2,F20,Ks300,1-Wire,Homematic usw ...
vitodens 300 & IstrkrM372 auslesen über USB und FHEM
RUHE IN FRIEDEN AHA1805 RIP Mallorca +29.08.16
I miss you and your Family H.H.L.L.