Hallo,
ich habe das bash Backup-Skript für die fhem-Konfiguration von dieser Seite implementiert:
http://www.meintechblog.de/2015/05/fhem-howto-automatisches-backup-auf-externem-nas/ (http://www.meintechblog.de/2015/05/fhem-howto-automatisches-backup-auf-externem-nas/)
Die Grundfunktion klappt, es wird alles gesichert und nur die letzten x Backups bleiben im Ordner.
Was aber gar nicht geht, sind alle Befehle vom Typ
perl /opt/fhem/fhem.pl 7072 ""
wie z.B.
perl /opt/fhem/fhem.pl 7072 "set FHEM.Backup off"
und auch alle setreading werden nicht ausgeführt. Es passiert garnichts im Dummy FHEM.Backup.
Ich habe gem. obiger Seite die Rechte der Skriptdatei überprüft, den User geprüft, Telnet steht auf initialized... ich komme da mit meinem Wissen aktuell nict weiter.
Kann mir jemand helfen, aus dem Skript heraus die Befehle zum laufen zu bringen?
Danke
Michael
Wenn du ein Telnet Device auf Port 7072 haben solltest, probier mal an den Anfang des Script ein
cd /opt/fhem
einzubauen.
Ok, das teste ich. Hatte auch ganz vergessen zu erwähnen, dass fhem auf einem RasPi läuft.
Leider bringt cd /opt/fhem nichts, das Skript erstellt das Backup, die Einträge im LogFile passen aber der Dummy FHEM.Backup ändert keinen der im Skript angesprochenen Werte.
Kann man über ein bash Skript auf fhem-Device-Attribute auch anders zugreifen, als über
perl /opt/fhem/fhem.pl 7072...
Hallo,
was bekommst Du den für eine Meldung, wenn Du die Befehle in einer Terminalsession eingibst?
Grüße Jörg
Zitat von: JoWiemann am 19 Oktober 2015, 13:55:00
Hallo,
was bekommst Du den für eine Meldung, wenn Du die Befehle in einer Terminalsession eingibst?
Grüße Jörg
Sorry für die blöde Frage, aber meinst Du damit, per SSH auf den RasPi und dann die Zeile eingeben?
Ja bitte, copy paste sozusagen dann siehst du direkt was an dem Code nicht stimmt
Gesendet von meinem Nexus 5 mit Tapatalk
So,
ich habe dann gerade getestet...
per ssh auf den RasPi, dann
perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Backup info backup starting now"
Ergebnis: kurze Pause, dann ist die Eingabeaufforderung wieder im Terminal, im Dummy FHEM.Backup verändert sich das Reading info nicht
dann
perl /opt/fhem/fhem.pl 7072 "set FHEM.Backup error"
Ergebnis: kurze Pause, dann ist die Eingabeaufforderung wieder im Terminal, im Dummy FHEM.Backup ändert sich der state nicht
Irgendwie passiert da garnix :-\
OK, wenn keine Fehlermeldung kommt ist zumindest einigermassen wahrscheinlich, dass telenet auf 7072 lauscht und das perl skript durchläuft eigentlich aber auch, dass die entsprechenden devices in fhem existieren und die kommandos auch keine anderen Fehler zurückliefern.
Es wäre mal interessant zu schauen ob die Komandos innerhalb von fhemweb funktionieren:
Also gib doch mal
set FHEM.Backup error
in fhemweb in das Command-Eingabefenster ein und schaue ob sich der status von FHEM.Backup ändert?
Johannes
Zitat von: viegener am 20 Oktober 2015, 02:06:37
Also gib doch mal
set FHEM.Backup error
in fhemweb in das Command-Eingabefenster ein und schaue ob sich der status von FHEM.Backup ändert?
Johannes
Ja, das geht wie erwartet. Da ich mit Telnet noch nicht so viel Erfahrung habe, hab ich mal das List des telnetPort hier angehängt (das password stimmt natürlich mit dem richtigen überein):
Internals:
CONNECTS 2
DEF 7072 global
FD 5
NAME telnetPort
NR 3
NTFY_ORDER 50-telnetPort
PORT 7072
STATE Initialized
TYPE telnet
Attributes:
password ######
room 9.6_System
password attr mal löschen z.B :)
Zitat von: rapster am 20 Oktober 2015, 08:07:17
password attr mal löschen z.B :)
Wenn ich das tue (angelegt wurde das attr irgendwie beim Einrichten von fhem selbst mit dem Passwort, mit welchem ich mich auch an der Weboberfläche selbst anmelde), kann dann jeder, der in meinem Netz ist, Dinge mit fhem per telnet machen? Ich kenne mich wie gesagt noch nicht so gut mit RasPi, Linux und fhem aus. Blöd wäre es aber, wenn ich das pwd raus nehme aus dem telnet Device und mir hinterher wer auch immer mein System zerschießen kann.
automatisch sollte das nicht mit password angelegt werden?
Das ist schon richtig dass dann jeder aus deinem Netz darauf zugreifen kann.
Du kannst es entweder mit dem Attribut allowFrom <ipAdressen> einschränken.
oder dein PW mitschicken: perl /opt/fhem/fhem.pl 7072 password "setreading FHEM.Backup info backup starting now"
Auf dem Router kannst du den Zugriff auch reglementieren - Stichwort Kindersicherung
Gesendet von meinem Nexus 5 mit Tapatalk
Zitat von: rapster am 20 Oktober 2015, 09:30:37
automatisch sollte das nicht mit password angelegt werden?
Das ist schon richtig dass dann jeder aus deinem Netz darauf zugreifen kann.
Du kannst es entweder mit dem Attribut allowFrom <ipAdressen> einschränken.
oder dein PW mitschicken: perl /opt/fhem/fhem.pl 7072 password "setreading FHEM.Backup info backup starting now"
OK, das versuche ich mal.
Kann man aus dem bash-Skript heraus auch anders auf die Fhem-Devices zugreifen? Oder geht sowas nur über den perl Aufruf?
Du willst doch nur ein Backup machen oder? Ich fahre hierzu fhem herunter, den raspi auch und mache ein fullbackup der sd karte auf meinem Laptop (ebenfalls Linux) ich verwende dazu dd if=/dev/mcblk0 of= /home/ meinFHEM_backup.img
Gesendet von meinem Nexus 5 mit Tapatalk
Ja, nur Backup war der Plan. Dann hab ich beim Lesen im Netz die im ersten Post verlinkte Anleitung gefunden, wie man Fhem quasi täglich und vor allem automatisch sichern kann.
Das Skript scheint auch zu funktionieren. Es legt das Backup als komprimierte Datei auf mein NAS und hält nur die letzten x Backups vor. Dazu brauche ich nichts weiter tun. Nur die ganzen Rückkopplungen zu Fhem über den Status der Sicherung gehen (bei mir) nicht. Es geht also weniger um "wie mache ich ein Backup", sondern um "warum werden die pearl Kommandos ignoriert".
Nach jeder Änderung erst alles per Hand runter fahren, sichern und was weiß ich noch machen, ist für mich keine Option. Recher sollen Dinge vereinfachen, nicht mir die Zeit klauen (was sie aber eh schon tun : 8) )
Zitat von: rapster am 20 Oktober 2015, 09:30:37
oder dein PW mitschicken: perl /opt/fhem/fhem.pl 7072 password "setreading FHEM.Backup info backup starting now"
Das war's! Tausend dank! Auch wenn jetzt das telnet Passwort quasi im Skript steht (tut aber ja das pwd für den NAS Zugriff auch), ist mir die Lösung immer noch lieber, als telnet offen laufen zu lassen.
Nochmals danke ;D
Deswegen der tipp das password attribut zu löschen und allowFrom zu setzen, da es nicht nur im Klartext verwendet, sondern auch unverschlüsselt übertragen wird.
Im normalfall braucht man das telnet device nur von localhost, also dann z.B. sowas setzen:
attr telnet allowfrom 127\.0\.0\.1
oder zusätzlich noch andere Adressen welche darauf zugreifen müssen.
Zitat von: rapster am 20 Oktober 2015, 11:18:17
Deswegen der tipp das password attribut zu löschen und allowFrom zu setzen, da es nicht nur im Klartext verwendet, sondern auch unverschlüsselt übertragen wird.
Im normalfall braucht man das telnet device nur von localhost, also dann z.B. sowas setzen:
attr telnet allowfrom 127\.0\.0\.1
oder zusätzlich noch andere Adressen welche darauf zugreifen müssen.
Ach so, jetzt hab ich es verstanden. Nur eine Frage zur Schreibweise der IP-Adresse. Ist bei Dir der localhost (also der Pi selbst, oder?) unter der 127.0.0.1 zu erreichen, oder wie ist das gemeint? Meiner hat eine feste IP 192.168.0.8, muss die dann da rein?
Die 127.0.0.1 ist die Loopbackadresse deines Pi (https://de.wikipedia.org/wiki/Loopback), mit dieser Adresse ist immer der localhost gemeint und sollte im Normalfall für den Zugriff anderer lokaler Programme passen.
Mit dieser Einstellung ist dann fhem nach außen hin (außerhalb des Pi's selber) abgeschottet.
Zitat von: rapster am 20 Oktober 2015, 12:20:39
Die 127.0.0.1 ist die Loopbackadresse deines Pi (https://de.wikipedia.org/wiki/Loopback), mit dieser Adresse ist immer der localhost gemeint und sollte im Normalfall für den Zugriff anderer lokaler Programme passen.
Mit dieser Einstellung ist dann fhem nach außen hin (außerhalb des Pi's selber) abgeschottet.
Einwandfrei, danke, danke :)
Jetzt läuft das Skript, pwd ist aus telnet raus und ich fühle mich zumindest sicher(er).
Super, und andere Module welche das telnet-device verwenden (Blocking.pm verwenden) können nun auch mit fhem sprechen :)