Synology NAS – Scripts via de taakplanner

tijd en kalender

Op de Synology kan je via de Taakplanner diverse script op een bepaalde tijd en/of datum laten uitvoeren, ik heb hier een paar voorbeelden op een rij gezet voor o.a. Bash, PHP en Python.

Wat heb je nodig?

1) WinSCP

Hieronder een voorbeeld en schermafdrukken uitgevoerd op DSM 5.x

1) Via Control Panel > Task Scheduler kun je een eigen script toevoegen om uit te laten voeren:

Taken toevoegen

synology taakplanner 01

2) Je kan de taaknaam opgeven, de “gebruiker” die hem uitvoerd en in het veld kun je dus een “commandolijn” opgeven dat in Linux uitgevoerd wordt:

synology taakplanner 02

3) In de TAB “Schedule” kun je de planning instellen:

synology taakplanner 03


BASH script uitvoeren

Een BASH script kun je uitvoeren met:  sh /pad/naar/bestand.sh

Om het te testen kun je het volgende proberen:

1) Maak een folder aan “cron” in de map “volume1” (volume1/cron) met WinSCP.

2) Maak een bestand aan “test.sh” met deze inhoud

3) Voeg de taak toe

synology taakplanner 04

4) Klik op OK

synology taakplanner 05

5) En start de taak met RUN

synology taakplanner 06

Als het goed is gegaan, verschijnt er een bestandje “leesmij.txt” in volume1/cron met de inhoud “Hallo wereld!“.


PHP script uitvoeren

Een PHP script kun je uitvoeren met:

1a) DSM 5.x:   php /pad/naar/bestand.php

1b) Met pad op DSM 5.x:  /usr/bin/php /pad/naar/bestand.php

met commando opties op de commandline:

1c) DSM 6.x: php56 /pad/naar/bestand.php

2)  php /pad/naar/bestand.php commando1 commando2 etc

Om het te testen kun je het volgende uitvoeren:

1) Om php scripts buiten de standaard gedefinieerde folders (open_basedir) uit te voeren moet je de “volume1/cron” folder toevoegen aan de open_basedir:
Ga naar > Control Panel > Web Services > TAB PHP Settings en voeg aan de open_basedir toe:

:/volume1/cron

synology open basedir instellen

en klik op Apply!

2) Maak een folder aan “cron” in de map “volume1” (volume1/cron) met WinSCP.

3) Maak een bestand aan “test.php” met deze inhoud

4) Voeg de taak toe ( php /volume1/cron/test.php ) en start deze.

Als het goed is gegaan, verschijnt er een bestandje “leesmij.txt” in volume1/cron met de inhoud “Hallo wereld!“.


Python script uitvoeren

Een Python script kun je uitvoeren met:

1a)  python /pad/naar/bestand.py

1b) Met pad op DSM 5.x:  /usr/bin/python /pad/naar/bestand.py

met commando opties op de commandline:

2)  python /pad/naar/bestand.py commando1 commando2 etc

Om het te testen kun je het volgende uitvoeren:

1) Maak een folder aan “cron” in de map “volume1” (volume1/cron) met WinSCP.

2) Maak een bestand aan “test.py” met deze inhoud

4) Voeg de taak toe ( python /volume1/cron/test.py ) en start deze.

Als het goed is gegaan, verschijnt er een bestandje “leesmij.txt” in volume1/cron met de inhoud “Hallo wereld!“.


Waar worden deze CRON JOBS opgeslagen?

Als je de taakplanner van de synology gebruikt, worden de taken opgeslagen in het bestand: DSM 4.2  /etc/crontab , de inhoud ziet er bijvoorbeeld zo uit:

De TAAK ID’s kun je weervinden in de bestanden:

DSM 4.2:  /usr/syno/etc/scheduled_tasks  en/of  /tmp/scheduled_tasks

Deze zien er ongeveer zo uit:

De taak ID’s kun je ook laten weergeven als je met PuTTy op de commandolijn zit, dit doe je met het commando:  synoschedtask --get id=1

taakplanner taak id