Cronjob mit Filebot klappt nicht

  • 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.

patter

Benutzer
Registriert
08. Mai 2013
Beiträge
15
Reaktionspunkte
0
Punkte
7
Ich habe ein kleines Testscript für Filebot, welches von der Command-Line (als root) einwandfrei funktioniert. Warum es als User nicht funktioniert ist wohl ein Problem für ein ander mal.

Hier ist meine Cron-Befehl, (welchen ich auch mal ohne das vorangestellte "sh" probiert habe).

Code:
*       *       *       *       *       root    sh /volume1/public/filebot2.sh >> /volume1/homes/pat/filebot2.log

Danach habe ich cron neu gestartet…

Code:
/usr/syno/sbin/synoservicectl --restart crond

…, das Logfile wird geschrieben ist aber leer.

Das Skript ist super simpel:

Rich (BBCode):
#!/opt/bin/bash

/usr/syno/bin/filebot -rename "/volume1/homes/pat/_input/" --format '{n} - {s00e00} - {t}' --db TheTVDB -non-strict

Ich habe auch einmal das vorangestellte "sh " weggelassen und versucht anstatt dem Skript direkt den Befehl einzugeben, aber nix.

Mit einem Standard Groovyscript von Filebot verhält es sich ebenso:

Rich (BBCode):
filebot -script fn:watcher -rename "/volume1/homes/pat/_input/" --output "/volume1/homes/pat/_output/" --format '{"Season ${s.pad(2)}"}/{n} - {S00E00} - {t}' --db TheTVDB -non-strict

Und Synology's Task Scheduler ist auch nicht im Stande auch nur irgendeines der Filebot-Skripte zu starten.

Ich bitte um Hilfe, das wäre das letzte Puzzelstück zum Serienvergnügen.
 
Das Skript ist super simpel:

Rich (BBCode):
#!/opt/bin/bash
/usr/syno/bin/filebot -rename "/volume1/homes/pat/_input/" --format '{n} - {s00e00} - {t}' --db TheTVDB -non-strict

Hast du es schon mit folgendem Shebang probiert?
Rich (BBCode):
#!/bin/sh

Zusätzlich würde ich noch eimal den File-owner und die Dateiattribute prüfen.

Eine ähnliche Problemstellung findest du auch hier im Forum (link).

Gruß
luddi
 
Jup. Einen anderer Shebang der ebenfalls versucht wurde war "#!/bin/bash" – ich hab's jetzt erst einmal wieder bei deiner Version gelassen.

Soweit ich das sehe/verstehe sind die Zugriffsrechte auch in Ordnung, da das Skript ja im Cron vom root ausgeführt wird und der lesen, schreiben und ausführen darf – habe mir mal die Rechte der in Frage kommenden Kandidaten angeschaut:

Rich (BBCode):
-rwxr-xr-x    1 root     root           357 Aug 11 10:06 filebot2.sh
lrwxrwxrwx    1 root     root            37 Aug  4 17:59 filebot -> /volume1/@appstore/filebot/filebot.sh
-rwxr-xr-x    1 admin    users         1252 Jul  8 13:01 filebot.sh
-rw-r--r--    1 admin    users     30685668 Jul 16 15:03 FileBot.jar

Ich habe mich letzte Woche noch einmal mit dem Thema "Zugriffsrechte" beschäftig, im Großen und Ganzen sind es noch weitestgehend böhmische Dörfer für mich. Mein regulärer Nutzeraccount ist auf Admin gesetzt und kann mittels `sudo` auch root Befehle ausführen und in Systemdateien schreiben. Aber… ich dachte zumindest, dass das bei dem Skript über Crontab als root gar nichts zur Sache tut und das quasi laufen muss… wenn als root schon das Skript an sich so in der Shell ausgeführt werden kann ohne Probleme.

Vorsichtshalber habe ich mal in meinem User und im root account die Pfade hinzugefügt in der .bashrc:

Rich (BBCode):
PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin:/var/packages/JavaManager/target/Java/bin:/var/packages/JavaManager/target/Java/jre/bin:/var/packages/JavaManager/target/Java/bin:/var/packages/JavaManager/target/Java/jre/bin
 
Rich (BBCode):
*       *       *       *       *       root    sh /volume1/public/filebot2.sh >> /volume1/homes/pat/filebot2.log 2>&1

... in der crontab sollte helfen, dem Problem auf die Spur zu kommen
 
Das filebot2.log bleibt auch weiterhing leer. Selbst wenn ich "2>&1" hinzufüge (… wobei ich gedacht habe, das die Parameter eh dafür sorgen, dass jeglicher Output unterbunden wird).

Hab auch mal das vorangestellte "sh " wieder entfernt. Blöd, dass selbst die Fehlersuche sich als so schwer erweißt.

Nachtrag: Nur um das vorwegzunehmen… crontab funktioniert schon… habe mal ein anderes Skript mit einer simplen Datums und Uhrzeitausgabe jede Minute loggen lassen zu Testzwecken.
 
wobei ich gedacht habe, das die Parameter eh dafür sorgen, dass jeglicher Output unterbunden wird).
ne das führt dazu dass die Ausgaben auf der Error Konsole (2) auf die Standartausgabe (1) umgeleitet werden. Mit der Ausgabeumleitung > oder >> leitest Du nur die Standartausgabe um aber nicht die Fehlerausgabe
 
Vorsichtshalber habe ich mal in meinem User und im root account die Pfade hinzugefügt in der .bashrc:

Rich (BBCode):
PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin:/var/packages/JavaManager/target/Java/bin:/var/packages/JavaManager/target/Java/jre/bin:/var/packages/JavaManager/target/Java/bin:/var/packages/JavaManager/target/Java/jre/bin

...was wahrscheinlich keinen Einfluss auf cron hat...

Kopiere das Script doch mal nach /tmp und ändere die crontab so, dass sowohl das Scrpt, als auch das Log auf /tmp/... verweisen.
 
patter, ist bei dir jetzt schon irgendetwas dabei herausgekommen?
 
Bei mir wird immer dieser Fehler in der *.txt Datei angegeben:

Code:
/usr/syno/bin/filebot: line 35: java: not found

Da besteht nun die Frage, wie ich java mit Pfadangabe übergeben kann, sodass filebot java nutzen kann. Installiert ist Java 8, also die Version ist nicht das Problem und in der shell kann ich diese auch ausführen.

In .profile steht der richtige Pfad zu java auch drin... deswegen kann ich das nicht ganz nachvollziehen
 
Zuletzt bearbeitet:
Hallo,
wenn das script per cron ausgeführt wird so wird die .profile nicht berücksichtigt.
Also schreibe die Zeile aus der .profile in Deine filebot2.sh.

Gruß Götz
 
Danke schön, genau daran lag es, jetzt funktioniert es auch :) :cool:
 
Entschuldigt. Ich bekomme keine Email-Benachrichtigungen über meine Abo für diesen Thread… sonst hätte ich schon früher die Lösung gesehen und geantwortet.

In kurz: @goetz hat den Nagel auf den Punkt getroffen. Natürlich muss der Pfad im Script gesondert ausgewiesen werden, dann klappt's auch mit dem Nachbarn und der Cronjob schnurrt nur so vor sich hin.

Nachtrag: Es klappt auch jetzt höchst offiziell mit dem Task Scheduler.

Jetzt heißt es "Seriendatenbank-Umbennungs-Automation hier komme ich!".

Vielen Dank.
 
Zuletzt bearbeitet:
Ich habe noch einige Troubles in meinem Script:

- filebot benennt alle Files (auch die nfo etc.) um und verschiebt sie - würde gerne nur Videofiles abarbeiten lassen ;)

- nach dem renaming die übrig gebliebenen leeren Ordner löschen funktioniert noch nicht - lösche einfach alles im Ordner, sind ja eh alle Videos schon verschoben :)

- habe 2 scripte, eins für serien eins für filme. Ist beides im Ordner kann ich keines von beiden verwenden - Filme werden sonst oft im Serienformat umbenannt und umgekehrt :(



Wichtige INFO:
Ich muss -no-xattr setzen, da filebot sonst Attribute in die Files schreibt mit denen rsync nicht umgehen kann.
Folglich bricht das Backup aufs andere NAS mit einem Fehler ab (die Files werden trotzdem übertragen)
 
Schau dir dazu am besten mal diesen Thread im FileBot Forum an.
Zu Punkt 1.) Da solltest du schon beim Entpacken Dateien ausschließen, kann sein das man auch per FileBot Ausnahmen angeben kann, bin mir da jetzt aber nicht sicher. Ergänzung: Diesem Beitrag zur Folge ist es also möglich (geht bestimmt noch anders, das ist aber das was ich auf Anhieb gefunden habe).
Punkt 2.) Mit
Rich (BBCode):
--def clean=y
löscht du oder machst du das per Hand? Also bei mir klappt es mit clean super.
3.) Dafür gibt es
Rich (BBCode):
--def "seriesFormat=X:/TV/{n}/{'S'+s}/{fn}" "movieFormat=Z:/Movies/{n} {y}/{fn}"
das funktioniert ohne Probleme und du brauchst nicht mehr zwei Scripte (ist auch kurz im o.g. Thread beschrieben).

Bei Fragen nur zu, ich hätte dir ansonsten mal meine Config gezeigt, das ist momentan aber nicht möglich ;)
 
Zuletzt bearbeitet:
Das ging schnell, danke für die Links!

Werde die beiden --def mal testen!

Wenn ich die DB's fix vorgeben möchte sollte ich dann
Rich (BBCode):
--db TVDB, imdb
nehmen oder?
 
Gemäß diesem Thread ist es nicht möglich bei "--db" mehrere Databases anzugeben. Man könnte jedoch versuchen, wie hier beschrieben vorzugehen, also zwei mal die Ausführung von FileBot verbinden, sodass man unterschiedliche DB´s angeben kann (in dem einen Kommando TDVB und im anderen imdb).
 
Ok alles klar, dann teste ich mal ohne Angabe der DB und mit imdb :)

Irgendwie klappt das mit den --def bei mir nicht!
 
Du darfst das "--def" nur einmal angeben, das gilt dann für alle Argumente die dahinter aufgeführt werden, sprich nur einmal --def "seriesFormat=X:/TV/{n}/{'S'+s}/{fn}" "movieFormat=Z:/Movies/{n} {y}/{fn}" ... [weitere Optionen]

Am besten arbeitest du auch mit -action test, dann kannst du schauen was dabei herauskommt
 
Ok alles klar, ja dann klappt es :)
Leider ignoriert er noch mein Format: "seriesFormat=$SERIEN/{n}/Staffel{s.pad(2)}/{n}.{s00e00}.{t}"
Muss ich deines vom Vorthread nehmen?

Die Vorgabe der DB lasse ich weg, damit Serien & Movies klappen ;)
 
Was bedeutet denn ignorieren? Wirft FileBot einen Fehler aus? Du hast $SERIEN angegeben, das hast du dann aber auch noch an anderer Stelle definiert? Ansonsten versuch es mal mit dem absoluten Pfad
 
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