Cronjob mit Filebot klappt nicht

Status
Für weitere Antworten geschlossen.

patter

Benutzer
Mitglied seit
08. Mai 2013
Beiträge
15
Punkte für Reaktionen
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.
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
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
 

patter

Benutzer
Mitglied seit
08. Mai 2013
Beiträge
15
Punkte für Reaktionen
0
Punkte
7
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
 
Mitglied seit
10. Jan 2014
Beiträge
393
Punkte für Reaktionen
0
Punkte
0
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
 

patter

Benutzer
Mitglied seit
08. Mai 2013
Beiträge
15
Punkte für Reaktionen
0
Punkte
7
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.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
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
 
Mitglied seit
10. Jan 2014
Beiträge
393
Punkte für Reaktionen
0
Punkte
0
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.
 

Pulpi

Benutzer
Mitglied seit
24. Feb 2014
Beiträge
243
Punkte für Reaktionen
0
Punkte
22
patter, ist bei dir jetzt schon irgendetwas dabei herausgekommen?
 

Pulpi

Benutzer
Mitglied seit
24. Feb 2014
Beiträge
243
Punkte für Reaktionen
0
Punkte
22
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:

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.160
Punkte für Reaktionen
407
Punkte
393
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
 

Pulpi

Benutzer
Mitglied seit
24. Feb 2014
Beiträge
243
Punkte für Reaktionen
0
Punkte
22
Danke schön, genau daran lag es, jetzt funktioniert es auch :) :cool:
 

patter

Benutzer
Mitglied seit
08. Mai 2013
Beiträge
15
Punkte für Reaktionen
0
Punkte
7
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:

DKeppi

Benutzer
Mitglied seit
01. Apr 2011
Beiträge
3.217
Punkte für Reaktionen
69
Punkte
114
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)
 

Pulpi

Benutzer
Mitglied seit
24. Feb 2014
Beiträge
243
Punkte für Reaktionen
0
Punkte
22
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:

DKeppi

Benutzer
Mitglied seit
01. Apr 2011
Beiträge
3.217
Punkte für Reaktionen
69
Punkte
114
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?
 

Pulpi

Benutzer
Mitglied seit
24. Feb 2014
Beiträge
243
Punkte für Reaktionen
0
Punkte
22
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).
 

DKeppi

Benutzer
Mitglied seit
01. Apr 2011
Beiträge
3.217
Punkte für Reaktionen
69
Punkte
114
Ok alles klar, dann teste ich mal ohne Angabe der DB und mit imdb :)

Irgendwie klappt das mit den --def bei mir nicht!
 

Pulpi

Benutzer
Mitglied seit
24. Feb 2014
Beiträge
243
Punkte für Reaktionen
0
Punkte
22
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
 

DKeppi

Benutzer
Mitglied seit
01. Apr 2011
Beiträge
3.217
Punkte für Reaktionen
69
Punkte
114
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 ;)
 

Pulpi

Benutzer
Mitglied seit
24. Feb 2014
Beiträge
243
Punkte für Reaktionen
0
Punkte
22
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