- Registriert
- 16. Jan. 2014
- Beiträge
- 241
- Reaktionspunkte
- 1
- Punkte
- 24
Hallo,
seit dem Update auf DSM 6.0 habe ich Probleme damit einen bestimmten find-Befehl von einer entfernten Maschine abzusetzen.
Zunächst einmal etwas Hintergrund:
Neue Mediendateien kommen bei mir über Unison auf die DS, sprich über SSH/rsync.
Davon bekommt der Medienindizierungsdienst leider nichts mit, also die Dateien tauchen danach weder im DLNA-Server, noch Audio- oder Video-Station auf, weswegen ich auf jede neue Datei folgenden Befehl ausführen muss:
Um das zu vereinfachen habe ich folgenden find-Befehl zusammengeschustert:
Der listet mir gleich alle neuen Dateien auf und führt auf all diese den synoindex-Befehl aus.
Bis hierhin gibt es keine Probleme, das funktioniert auch mit der DSM 6.0 noch so.
Nun zum Problem:
Unison und den find-Befehl habe ich bisher immer von den Clients - einem Mac und der Zweit-DS - aus mit einem Shell-Skript nach folgendem Muster abgesetzt:
Anmerkung: Ich habe schlüsselbasierte Logins für die Clients
Das hat mit DSM 5.2 einwandfrei funktioniert, seit DSM 6.0 passiert folgendes:
- Die neuen Dateien werden immer noch vom find-Befehl aufgelistet, aber ...
- In jeder zweiten Zeile steht nun find: 'synoindex': No such file or directory
- Beim direkten Ausführen des synoindex-Befehl aus der Ferne kommt ash: synoindex: command not found
Diese Fehler treten nur auf, wenn die Befehle zusammen mit dem ssh-login verschachtelt von einer externen Maschine abgeschickt werden. Wenn ich bereits per SSH auf der DS eingeloggt bin und die Befehle ausführe klappt es ohne Probleme.
Ich bin mit meinem Latein am Ende, folgendes habe ich schon ohne Erfolg probiert:
- Alle Kombinationen mit/ohne Anführungszeichen für die Verschachtelung der Befehle
- /bin/sh und /bin/bash als Shebang der Skripte
- execdir statt exec
- Den Befehl in einem Shell-Skript lokal auf der DS gespeichert und dieses aus der Ferne ausgeführt
Ich hoffe jemand hat eine Idee, woran es liegen könnte. Irgendeine geänderte Syntax, von der ich nichts mitbekommen habe?
Grüße
Hoffy
PS.: Ich bin absolut kein Experte auf dem Gebiet, deswegen bin ich immer für Vorschläge offen, wie man diese Problemstellung eleganter lösen könnte.
seit dem Update auf DSM 6.0 habe ich Probleme damit einen bestimmten find-Befehl von einer entfernten Maschine abzusetzen.
Zunächst einmal etwas Hintergrund:
Neue Mediendateien kommen bei mir über Unison auf die DS, sprich über SSH/rsync.
Davon bekommt der Medienindizierungsdienst leider nichts mit, also die Dateien tauchen danach weder im DLNA-Server, noch Audio- oder Video-Station auf, weswegen ich auf jede neue Datei folgenden Befehl ausführen muss:
Rich (BBCode):
synoindex -a /volume1/music/neue Datei.mp3
Um das zu vereinfachen habe ich folgenden find-Befehl zusammengeschustert:
Rich (BBCode):
find /volume1/music/ -path /volume1/music*@eaDir -prune -o -mtime -1 -type f -print -exec synoindex -a {} \;
Der listet mir gleich alle neuen Dateien auf und führt auf all diese den synoindex-Befehl aus.
Bis hierhin gibt es keine Probleme, das funktioniert auch mit der DSM 6.0 noch so.
Nun zum Problem:
Unison und den find-Befehl habe ich bisher immer von den Clients - einem Mac und der Zweit-DS - aus mit einem Shell-Skript nach folgendem Muster abgesetzt:
Rich (BBCode):
#!/bin/sh
unison $PROFIL
ssh root@DS 'find /volume1/music/ -path /volume1/music*@eaDir -prune -o -mtime -1 -type f -print -exec synoindex -a {} \;'
Das hat mit DSM 5.2 einwandfrei funktioniert, seit DSM 6.0 passiert folgendes:
- Die neuen Dateien werden immer noch vom find-Befehl aufgelistet, aber ...
- In jeder zweiten Zeile steht nun find: 'synoindex': No such file or directory
- Beim direkten Ausführen des synoindex-Befehl aus der Ferne kommt ash: synoindex: command not found
Diese Fehler treten nur auf, wenn die Befehle zusammen mit dem ssh-login verschachtelt von einer externen Maschine abgeschickt werden. Wenn ich bereits per SSH auf der DS eingeloggt bin und die Befehle ausführe klappt es ohne Probleme.
Ich bin mit meinem Latein am Ende, folgendes habe ich schon ohne Erfolg probiert:
- Alle Kombinationen mit/ohne Anführungszeichen für die Verschachtelung der Befehle
- /bin/sh und /bin/bash als Shebang der Skripte
- execdir statt exec
- Den Befehl in einem Shell-Skript lokal auf der DS gespeichert und dieses aus der Ferne ausgeführt
Ich hoffe jemand hat eine Idee, woran es liegen könnte. Irgendeine geänderte Syntax, von der ich nichts mitbekommen habe?
Grüße
Hoffy
PS.: Ich bin absolut kein Experte auf dem Gebiet, deswegen bin ich immer für Vorschläge offen, wie man diese Problemstellung eleganter lösen könnte.
