Synology-Forum.nl
Packages => 3rd party Packages => SABnzbd (usenet) => Topic gestart door: Lithium_Grim op 07 mei 2010, 18:57:20
-
Ik wil een script maken die na het downloaden de owner en usergroep goedzet en ook de upnp index aanmaakt. Ik heb het volgende:
fullpath=$1
nzbfile=$2
jobname=$3
reportnumber=$4
category=$5
newsgroup=$6
## Change owner and groups of folder and files
chown -R admin:users "$fullpath"
## Delete the existing indexes of the given
synoindex -D "$fullpath"
## Add the folder indexes
synoindex -A "$fullpath"
echo "Added all files in $fullpath and re-indexed"
Ik zet dit in de file test.sh in de map /volume1/SABnzbd/scripts/ en heb deze map ook als scriptmap in de sabconfig staan.
Als het script nu getriggerd wordt na een download krijg ik de melding
Exit(-1) Cannot run script /volume1/SABnzbd/scripts/test.sh (Meer)
Weet iemand wat de oorzaak hiervan kan zijn?
-
twee dingen:
Waarschijnlijk staan de execute rights van het script niet goed. Log in als root and doe een 'chmod 755' op de file of desnoods 'chmod 777' om alle rechten aan iedereen te geven van het script. Check anders of het script draait vanaf de commandline, zo te zien of je alleen maar een path op te geven als extra parameter.
Tweede is dat het script draait als root. Dit kan betekenen dat sommige standaard paden niet meegenomen worden, en sowieso is het veiliger om programma's inclusief het path ernaar toe op te nemen: chown -> /bin/chown en synoindex -> /usr/syno/bin/synoindex.
Groeten,
Remco
-
Goed punt.
Heb het als test nu herscreven naar
test.sh
#! /bin/ash
## Change owner and groups of folder and files
/bin/chown -R admin:users /volume1/video/[TV series]
## Delete the existing indexes of the given
/usr/syno/bin/synoindex -D /volume1/video/[TV series]
## Add the folder indexes
/usr/syno/bin/synoindex -A /volume1/video/[TV series]
Gezien mijn Noob status ben ik in putty aangelogd als root en ben naar de script map gegaan met cd /volume1/scripts/
vervolgens ./test.sh maar dan krijg ik de melding
-ash: test.sh: not found
terwijl ls -l gewoon aangeeft dat het er is
-rwxrwxrwx 1 Arnold users 302 May 8 13:38 test.sh
-
OK, heb nu een script dat vanuit putty wel te starten is:
/usr/syno/bin/synoindex -D "/volume1/video/[Films]/test mij aub"
/usr/syno/bin/synoindex -A "/volume1/video/[Films]/test mij aub"
deze werkt dus denk ik mooi... gebruiken als post processing en de mapnaam vervangen door $1 (=parameter voor target folder waar sab de job in uitpakt)
Dus:
/usr/syno/bin/synoindex -D "$1"
/usr/syno/bin/synoindex -A "$1"
maar helaas nog steeds
Exit(-1) Cannot run script /volume1/SABnzbd/scripts/test.sh (Meer)
Weet iemand raad? Uhm... Help??
-
Ik denk dat ik het gevonden heb....
Aangezien het op m'n iMac wel goed werkt (opm: dat is Sabnzbd versie 0.5.4) denk ik dat het probleem zich specifiek op de Synology box voordoet.
Ik ben dus eens in de code van de PostProcessing gedoken en heb wat zitten prutsen. Het resultaat is niet helemaal perfect omdat ik zie dat niet alle argumenten juist aan het uit te voeren script worden meegeleverd maar voor mij voldoet het tenminste.
Mocht er iemand geïnteresseerd zijn in de aanpassingen die ik gemaakt heb, laat het hier dan even weten, dan zal ik de code publiceren.
-
Ik zou graag zien hoe je dat gedaan hebt. ben het nu echt zat dan ik niet direct de bestanden zie op mijn media streamer
-
Zoals gezegd heb ik de code van de PostProcessing licht aangepast:
File: /volume1/@appstore/sab2/SABnzbd-0.5.2/sabnzbd/newsunpack.py
vervang de code voor de 'external_processing' routine door bijgaande code:
#------------------------------------------------------------------------------
def external_processing(extern_proc, complete_dir, filename, msgid, nicename, cat, group, status):
# modification by JB to make postprocessing work on Synology Diskstation
# command = [str(extern_proc), str(complete_dir), str(filename),
# str(nicename), str(msgid), str(cat), str(group), str(status)]
command = " "" + str(extern_proc) + "" "" + str(complete_dir) + "" "" + str(filename) + "" "" +
str(nicename) + "" "" + str(msgid) + "" "" + str(cat) + "" "" + str(group) + "" "" +
str(status) + """
# end modification
stup, need_shell, command, creationflags = build_command(command)
env = fix_env()
# lines inserted by JB to make postprocessing work on Synology Diskstation
logging.info('command=%s', command)
need_shell = True
# end insert
logging.info('Running external script %s(%s, %s, %s, %s, %s, %s, %s)',
extern_proc, complete_dir, filename, nicename, msgid, cat, group, status)
try:
p = subprocess.Popen(command, shell=need_shell, stdin=subprocess.PIPE,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
startupinfo=stup, env=env, creationflags=creationflags)
except:
logging.debug("Failed script %s, Traceback: ", extern_proc, exc_info = True)
return "Cannot run script %srn" % extern_proc, -1
output = p.stdout.read()
ret = p.wait()
return output, ret
#------------------------------------------------------------------------------
Herstart (natuurlijk alleen nodig als sabnzbd al loopt) sab2 vanuit Package Management et voila!
Zorg uiteraard voor een geldig post processing script, bij mij komen nu tenminste de verwachte resultaten op het scherm:
Voorbeeld
$0= /volume1/video/SABnzbd/scripts/mijnscript.sh
$1= /volume1/video/voorbeeld
$2= voorbeeld.nzb
$3= voorbeeld
$4=
$5=
$6= alt.iets.iets
$7= 0
Ik hoop dat je hier mee verder kunt.
Suk6!
-
viewtopic.php?f=50&t=9371&p=45870#msg45870 (http://www.synology-forum.nl/viewtopic.php?f=50&t=9371&p=45870#msg45870)