NAS für beliebige Aktion im monatlichen Intervall Ein- u. Ausschalten 2.3.2

Script zum Einschalten des NAS für die Durchführung von monatlichen Ereignissen. Die QTS eigene Steuerung läßt nur ein wöchentliches Intervall zu, dieses Script dient als Umgehung dieser Beschränkung.

Die verschiedenen Tabellen für eine Ereignisplanung innerhalb des NAS sind unabhängig und bieten nicht die gleichen Optionen.

So kann z.B. beim Einrichten der Sicherungsjobs ein Intervall "monatlich" eingestellt werden, in der Steuerung für die Energieeinstellungen ist jedoch max. ein Intervall von "wöchentlich" möglich.

Sofern das NAS im 24/7 Betrieb arbeitet stellt dies kein Problem dar, ist das NAS jedoch ausgeschaltet, fehlt eine entsprechende Option um es einzuschalten.

Dieses Script umgeht dieses Problem auf folgende Art und Weise:

Wenn das gewünschte Ereignis z.B. am 10. eines jeden Monats ausgeführt werden soll, so wird das NAS wöchentlich eingeschaltet und wieder ausgeschaltet. Das Script prüft an Hand des aktuellen Datums (NTP ist empfohlen), wieviele Tage es noch bis zum 10. des Monats sind. Sind es weniger als 7 Tage (also innerhalb der aktuellen Woche), so werden in der entsprechenden Konfigurationsdatei die Einträge modifiziert, so das das NAS am 10. startet.

Sobald das NAS am 10. startet wird durch das Tagesdatum festgestellt das der aktuelle Tag dem gewünschten Einschaltdatum entspricht und es werden wieder die ursprünglichen Werte für das wöchentliche Einschalten eingetragen.

Dadurch ist sichergestellt, das andere, wöchentlich geplante Ereignisse, wieder wie zuvor ausgeführt werden.

Liegt der 10. nicht im aktuellen Wochenintervall, so werden keine Einträge geändert.

Damit der monatliche Rhythmus immer beibehalten werden kann darf als max. Wert der 28. Tag eingetragen werden, werden höhere Werte eingetragen (29...31), wird durch das Script automatisch der 28. eingetragen.


Ab Version 2.2.1 können mehrere Tage für das monatliche Einschalten definiert werden, z.B. an jedem 1. für ein Backup, an jedem 10. für Raid Scrubbing, an jedem 20. für den ausführlichen HDD Test.

Die durchzuführenden Aktionen werden in den jeweiligen Funktionen des QTS geplant, das Script sorgt nur für das Ein- und Ausschalten des NAS!

Zusätzlich können für jeden dieser Tage unterschiedliche Ein- und Ausschaltzeiten angegeben werden. Wird keine Zeit angegeben, werden die im Script hinterlegen Default Werte genommen.

Das Script verfügt über eine (minimal) Hilfe, die durch den Parameter -h aufgerufen werden kann.

Näheres findet man in der entsprechenden .pdf.

Das Script muss in der crontab des NAS eingetragen werden, damit es ordnungsgemäß funktioniert. Linux und Shell Kenntnisse sind von Vorteil.


Die Zip Datei enthält das Shellscript und die PDF.

Getestet auf QTS 4.2.6 (Legacy) und 4.3.4 (HAL) Firmware.

  • Version 2.3.2

    Bugfix: Datumsberechnung ab August gefixt


    Bugfix: calculating fixed for dates after August



    Brief description of bugfix:

    The script calculates dates from the "date" string and separate the figures for year, month and day. A leading 0 (zero), i.e. 07 for July, is a hint to compute this figure as an oktal based figure.

    Starting in August the calculation will result in an error, because 08 is not a valid figure in an oktal based system. The calculation now is changed to compute the operation at a decimal base.

  • Version 2.3.1

    Bugfixes.

    Added option -skip. When used no additonal entries in schedule_boot_setting will be done, but note that the entries for power on/off must already be existing in the file.

    Without -skip additional entries will be created.


    Erlaubt mit -skip den Eintrag neuer Einträge in der schedule_boot_setting zu übergehen. Das ist u.U. dann sinnvoll, wenn bereits nur genau zwei Einträge (Ein- /Ausschalten) vorhanden sind.

    Ohne die Option -skip werden zusätzliche Einträge eingefügt.

  • Version 2.2.1

    Some Bugfixes.


    New features:

    Multiple language support when setting start/stop day at CLI in text form. Additonal languages can be added, see PDF for more information.

    A new parameter allows multiple power events, so you can set a monthy power on for backup, HDD testing, Raid scrubbing on different days.

    If no power schedule exists, the script will create one at first run of script!

    Existing schedules will be moved (not deleted).


    Please note that the script is in Beta status!


    Bugfix.


    Neu:

    Mehrsprachensupport wenn der Wochentag als Parameter mitgegeben wird, weitere Sprachen können im Script oder in einer separaten Datei hinzugefügt werden, näheres im .PDF.

    Es können nun mehrere Tage für das Einschalten angegeben werden, so können monatliche Aktionen wie Backup, Raid Scrubbing oder HDD Test auf verschiedene Tage verteilt werden.

    Sollte es noch keine Energieeinstellungen geben, werden diese beim ersten Scriptaufruf angelegt.

    Bei vorhandenen Einträgen werden diese nach "hinten" verschoben.

  • Version 1.7.2

    minor bugfix, version# wird ins log file übernommen.

  • Eine Alternative zur Veränderung des Config-Files bestünde darin, direkt die gewünschte Startzeit in die Echtzeituhr (vgl. → /sys/class/rtc/rtc0/date & time) zu schreiben - dann sind beliebige Zeiten in der Zukunft möglich - auch Monate oder Jahre. Ich starte bspw. das NAS 1x im Quartal für Backup-Aufgaben. Ein wöchtenlicher Neustart zur Aktualisierung der Startzeit ist nicht erforderlich.


    Ich stimme zu, dass QNAP mit wenig Aufwand die Zeitplanung erheblich verbessern könnte. Das war schon häufig ein Featurerequest. Ich selbst habe bereits 2010 einen entsprechenden Vorschlag mit Entwicklern von QNAP Taipeh besprochen, u.a. mit der Möglichkeit, Startskripte an ein Startdatum zu hängen.

    Nachdem nur marginal verbessert wurde, habe ich kurzerhand das Skript /etc/init.d/poweroff erweitert, indem nach der Abfrage der QTS-Konfig zur Echtzeitplanung (vgl. → /etc/config/schedule_boot_setting) die RTC ausgelesen und mit der gewünschten Startzeit verglichen wird. Ist die Differenz meiner Startzeit kleiner, als die nächste von QNAP gesetzten Zeit, überschreibe ich den Timer in der Echtzeituhr. Ich mache gewissermaßen dasselbe wie QNAP mit /sbin/gen_next_alarm.


    Nur so als Anregung...


    Gruß vom subitus

  • Auch von meiner Seite hier nochmals der Dank an @FSC830 für seine Mühen und Einsatz, den angedachten PoC (crontab Änderung ist nach einem Neustart wieder weg) in ein brauchbares Script zu bringen.


    Es macht einfach mehr Spaß an so ein Problem heranzugehen, wenn man nicht alleine herumbrütet und auch andere Sichtweisen und Herangehensweisen eingebracht werden. Zumal auch der Großteils des Scripts von @FSC830 stammt. Da bleibt mir nur mehr der eine oder andere Ansatz denn ich noch dazu beitragen kann.


    Obwohl, oder sogar, weil wir unterschiedliche Anforderungen und Voraussetzungen haben (NAS läuft öfters pro Woche, oder wird nur monatlich hochgefahren) können wir beide das Script (mit minimalen Änderungen) verwenden. Es sollte ja von Anfang an, eine "universal" einsetzbare Lösung werden

  • Gefällt mir, dein Ansatz. Finde es generell schade das QNAP es nicht für wichtig hält, selbst einen monatlichen Start oder Neustart oder sonst was, in die Firmware einzubauen.


    Das einzige was mir hier eben nicht passt, ist das Wöchentliche einschalten. Vielleicht schafft QNAP es doch noch dies in die Firmware einzubauen.

    Gefällt mir 2
    • Ich finde es überhaupt etwas befremdlich das für die unterschiedlichen Zeitsteuerungen unterschiedliche Optionen gibt.

      Eine einheitliche Linie fehlt da völlig.

      Gefällt mir 1
    • Mal sehen was in den nächsten Monaten dazu kommt, manchmal Dauert es eben etwas "länger" -> Monatlich/Tag suche ich schon länger als Funktion.