NEWS
jede Minute ein Bild downloaden und per sftp uploaden (mit Zeitstempel im Namen) geht das?
-
@lost-in-translation ich habe rein per blocky ein skript zur kamera überwachung meiner haustür erstellt.
wenn der bewegungsmelder auslöst, werden automatisch 20 billder (jede sek. ein bild) gespeichert und per scp auf mein NAS kopiert.
Den Dateinamen der Bilder habe ich selber definiert.
Bei unteresse, kann ich gern die einzelnen Schritte posten
-
@Kuddel said in jede Minute ein Bild downloaden und per sftp uploaden (mit Zeitstempel im Namen) geht das?:
Das hört sich sehr gut an. Vielleicht geht ja auch scp mit meiner Synology, das kann ich ja ausprobieren.
Im Moment brauche ich einfach mal Beispiele, um in die Thematik einzutauchen.
So ein importiertes Blockly nachzuvollziehen ist deutlich einfacher, als es sich ohne jede Vorkenntnisse auszudenken.ciao
frank
-
-
@Kuddel said in jede Minute ein Bild downloaden und per sftp uploaden (mit Zeitstempel im Namen) geht das?:
Spitze! Damit bastel ich mal rum.
ciao
frank -
@Kuddel
Ich habe es mal getestet.
Ich habe das mit dem Bewegungssensor entfernt und einen einfachen Timer davor gesetzt. Wenn das Skript läuft, dann werden laut log auch execs abgesetzt. Aber: Es passiert nix. Wenn ich den sudo wget befehl aus dem Log kopiere und im terminal ausführe, dann klappt es. Ebenso der scp Befehl. Nur das der scp nicht klappen kann, wenn die jpg Datei erst gar nicht geschrieben wurde, ist selbst mir klar.
Ich habe den exec in den Einstellungen der javascript Instanz aktiviert. Hast Du eine Idee, woran es liegen könnte?ciao
frank -
Ich habe jetzt mal beim wget das sudo entfernt und siehe da, der wget klappt jetzt.
Leider nicht der scp, was mir logisch erscheint, da nur pi den "Ausweis" hat, scp ohne Passwort zu machen.
das javascript läuft aber unter dem user iobroker
vom user iobroker weiss ich aber nicht das passwort.Wie stelle ich das an, das ich den user iobroker mit dem nötigen ssh Schlüssel ausstatte um einen scp auf mein NAS zu machen?
Mit dem User pi habe ich das durch, da klappt der scp Befehl im Terminal.ciao
frank
-
Meine Idee gerade ist, der user iobroker darf kein sudo im javascript. Das würde es erklären. Sowohl der wget als auch der whoami laufen, die Dateien finde ich in der Konsole wieder. Eigentlich müsste der scp unter user pi meines Erachtens auch funktionieren, das kann ich aber nicht prüfen, da ich nicht an den user iobroker rankomme.
Würde mich freuen, wenn mir mal jemand die Tomaten von den Augen nehmen könnte.
ciao
frank
Hier mal mein Blockly:
-
@lost-in-translation sagte in jede Minute ein Bild downloaden und per sftp uploaden (mit Zeitstempel im Namen) geht das?:
Würde mich freuen, wenn mir mal jemand die Tomaten von den Augen nehmen könnte.
Ich hab dir in nem anderen Thread geantwortet, wie du
iobroker
erlaubst, scp alspi
auszuführen. Wenn ich das hier lese: ist es ggf. einfacher, direktiobroker
das Ausführen vonscp
ohne Passwort zu erlauben? -
@AlCalzone
Ja, das denke ich auch.
ich könnte ja ein Schlüsselpaar anlegen und im user iobroker entsprechend hinterlegen.
Problem ist, ich bekomme keinen su iobroker hin.
Das Rechtekonzept habe ich noch nicht vor Augen.wenn ich versuche einen su iobroker zu machen, gibt es folgende Meldung:
root@ioBroker-RasPi:/home/pi# su iobroker This account is currently not available. root@ioBroker-RasPi:/home/pi#
somit bleibt wohl nur iobroker sudo zu ermöglichen?
ciao
frank
-
@lost-in-translation sagte in jede Minute ein Bild downloaden und per sftp uploaden (mit Zeitstempel im Namen) geht das?:
su iobroker
Der User hat keine Login-Shell, die musst du "erzwingen" für solche Spielchen:
su -s /bin/bash iobroker
-
@AlCalzone
Ich hab jetzt mit sudo den keygen im iobroker user ausgeführt und dann entsprechend den Schlüssel auf dem NAS hinterlegt.
SCP funktioniert jetzt im iobroker user, ich benötige nicht mehr ein sudo für die Aufgabe.Aber: ich musste feststelen, dass die jpg unvollständig auf dem NAS ankamen. Offenbar wurde das kopieren bereits angefangen, bevor der wget zu Ende war.
Ich habe jetzt 5 sekunden Wartezeit vorgesehen, aber so richtig elegant finde ich das nicht.Was bewirkt das Häkchen "mit Ergebnissen" könnte ich damit arbeiten? Mein Eindruck ist, der wget exec wird abgesetzt ohne das Ergebnis abzuwarten und der scp startet dann schneller als wget fertig wird. So wird nur ein viertel des jpg kopiert.
andere mögliche Lösung wäre wget und scp in ein bash script zu stecken. Aber dann habe ich von diesem schönen grafischen Puzzle nichts.
Deswegen meine Frage: wie erreiche ich, dass scp erst dann aufgerufen wird, wenn wget mit dem download fertig ist?
Frage am Rande, wo ich mir den Screenshot anschaue: wo kann ich ein ticket für blockly erstellen? Das "ms" hinter "Sek" beim timeout macht nicht wirklich Sinn, denke ich.Und wo finde ich die genaue Beschreibung was Ausführen timeout in 5 Sek genau macht?
Mein Intuitives Verständnis war: "geb den Befehlen hier drin 5 Sekunden ferdich zu werden, ansonsten kill"
Das beobachtete Verhalten war: "warte 5 Sekunden, dann ..."
ciaofrank
-
@lost-in-translation sagte in jede Minute ein Bild downloaden und per sftp uploaden (mit Zeitstempel im Namen) geht das?:
Was bewirkt das Häkchen "mit Ergebnissen" könnte ich damit arbeiten.
Die Namen der Optionen in Blockly sind IMO stark überarbeitungsbedürftig. Ich vermute, dass "mit Ergebnissen" auf die Beendung des Befehls wartet, also müsstest du es anhaken. Dann brauchst du auch kein Timeout, was versagen würde, wenn die Verbindung mal kurz langsam ist.
-
@AlCalzone
Wenn es mit dem Haken wartet, kann ich den Rest dann dahinter lassen, oder muss er dann in das neue Feld?
verschoben werden?Wird bei "mit Ergebnissen" irgendeine Variable mit der Rückgabe belegt? Dann könnte ich es ja richtig sauber machen und nur bei Errorlevel 0 einen scp anstossen.
ciao
frank -
Hier mal, was ich jetzt daraus gebastelt habe: (Funktioniert im Moment sogar)
Ich habe auf jeden Fall ne Menge gelernt. Vor allem das scp ohne Passwort nochmal aufzufrischen war gar nicht verkehrt.
ciao
frank
-
@lost-in-translation sagte in jede Minute ein Bild downloaden und per sftp uploaden (mit Zeitstempel im Namen) geht das?:
Wenn es mit dem Haken wartet, kann ich den Rest dann dahinter lassen, oder muss er dann in das neue Feld?
Der zweite Befehl müsste dann geschachtelt in den ersten exec-Befehl. Alles was darin steht, wird nach Beendigung des Befehls ausgeführt.
Ich kann mit dem XML leider nichts anfangen, da ich hier kein ioBroker griffbereit habe.