find -exec über SSH ausführen

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

Hoffy

Benutzer
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:

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 {} \;'
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.
 
Hallo,
gib mal den kompletten Pfad an
/usr/syno/bin/synoindex

Gruß Götz
 
Ähm, ja gut. Dass ich darauf nicht selbst gekommen bin sagt denke ich mal schon genug :D

Damit klappt es jetzt wieder, vielen vielen Dank für die schnelle Hilfe.

Grüße
Hoffy
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat