Einträge im Aufgabenplaner extrahieren als txt.file

insai

Benutzer
Mitglied seit
06. Jan 2020
Beiträge
43
Punkte für Reaktionen
5
Punkte
8
Anfängerfrage:
Hallo Leute,

in meinem Aufgabenplaner gibt es z.Z. ca 35 verschiedene "Aufgaben".

Ich würde gerne dies aktuellen "Aufgaben" als Txt-File o.ä. exportieren damit ich noch entsprechende Notizen hinzufügen und das ganze dann leichter Lesbar seperat abspeichern kann.
Es sollte kein Backup werden.

Hat wer einen Typ für mich?

Danke herzlichst
Heinz
 

Benie

Benutzer
Contributor
Sehr erfahren
Mitglied seit
19. Feb 2014
Beiträge
8.473
Punkte für Reaktionen
3.510
Punkte
344
Extrahieren weiß ich keine Möglichkeit.

Kopieren und mit Text Editor abspeichern,
oder auch der Reihe nach mit Titel in ein Wordfile kopieren, dort lassen sich am besten Ergänzungen hinzufügen.
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
6.057
Punkte für Reaktionen
1.855
Punkte
254
@insai
Schau' mal über die Konsole ins das Verzeichnis /usr/syno/etc/synoschedule.d
Dort müsstest du Dateien finden á la 1.task, 2.task, usw.
Da drin findest du die jeweiligen Aufrufe und Einstellungen.

Wie du bin ich früher auch mal darüber gestolpert, dass sich das schlecht sichern lässt.
Ich habe inzwischen eine andere Vorgehensweise:
  • Ich habe eine cron.sh in meinem Scriptverzeichnis (Beispiel: /volume1/scripte/) erstellt
  • Im Aufgabenplaner rufe ich stündlich die cron.sh auf. Ansonsten ist der Aufgabenplaner weitestgehend leer.
  • In der cron.sh sind alle weiteren Aufrufe zu anderen Scripten drin, teilweise mit if-Anweisungen (z.B. ein Aufruf begrenzt auf 15 Uhr).
  • Vorteil: Im Aufgabenplaner ist nur ein Eintrag (statt 35) und die cron.sh und alle anderen Scripte lassen sich bequem sichern.
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.148
Punkte für Reaktionen
736
Punkte
154
Wenn du den SSH-Zugang aktiviert hast, kannst du mit "synoschedtask --get" alle Tasks anzeigen lassen.

Das könntest du auch in eine Text-Datei umleiten: "synoschedtask --get > /volume1/Temp/tasks.txt"

"/volume1/Temp/tasks.txt" müsstest du natürlich auf deine Struktur anpassen...
 

insai

Benutzer
Mitglied seit
06. Jan 2020
Beiträge
43
Punkte für Reaktionen
5
Punkte
8
Hallo Leute

herzlichen Dank für Eure Hilfe,

leider bringt mir aber die von @Adama vorgeschlagene Lösung nicht den gewünschten Effekt sondern nur:
ID: [91272300]
Name: [PowerOff task 0]
State: [enabled]
Owner: [root]
Type: [daily]
Start date: [0/0/0]
Run time: [23]:[0]
Command: []
Status: [Not Available]

ID: [71270700]
Name: [PowerOn task 0]
State: [enabled]
Owner: [root
.
.

Der Lösungsansatz von @peterhoffmann führt ein Stück weiter aber leider nur zu ewigen Arbeit und einer nicht leicht zu pflegenden (für mich) Anwendung.
Der Vorschlag: "Ich habe eine cron.sh in meinem Scriptverzeichnis.." ist leider für mich zu hoch.

Vielleicht sollte ich die Anfrage etwas genauer definieren:

Die Ansicht im Aufgabenplaner (ein Auszug)
Aufgabenplaner-Auszug.jpg
sollten irgendwie in einem txt, oder ähnliches zur Verfügung stehen damit ich Notizen etc. anfügen und dies dann speichern kann, damit ich schnell eine Übersicht erhalten kann ohne immer im Aufgabenplaner suchen zu müssen.

Ein Backup des Aufgabenplaners sollte es nicht werden.


Danke für Eure Hilfe
Heinz
 

Thonav

Benutzer
Sehr erfahren
Mitglied seit
16. Feb 2014
Beiträge
7.890
Punkte für Reaktionen
1.510
Punkte
274
Hallo Heinz,
dann verstehe ich Deinen Wunsch nicht ganz. Wenn Du das Script von @Adama nutzt hast Du doch alle Informationen zu den Aufgaben.
Hier mal ein Auszug mit einer "Aufgabe":
.............
User: [root]
ID: [22]
Name: [BITWARDEN Installation]
State: [disabled]
Owner: [root]
App: [SYNO.SDS.TaskScheduler.Script]
AppName: [#common:command_line#]
Type: [once]
Start date: [2022/12/13]
Run time: [0]:[0]
Next Trigger: [N/A]
CmdArgv: []
Command: [
docker run -d --name=bitwarden \
-p 3012:3012 \
-p 5151:80 \
-v /volume1/docker/bitwarden/data:/data \
-v /volume1/docker/bitwarden/log:/log \
--restart always \
vaultwarden/server]

Last Run Time: Tue Dec 13 02:12:39 2022
Status: [Success]
.............

Das was Du nicht brauchst kannst Du doch einfach löschen - hast aber direkt die Einstellungen, die für eine Neuerstellung einer Aufgabe nötig sind (hier alles was fett dargestellt ist). Notizen kannst Du auch hinzufügen...
 
Zuletzt bearbeitet:

ctrlaltdelete

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
13.633
Punkte für Reaktionen
5.809
Punkte
524
@insai Hast du das als root ausgeführt?
synoschedtask --get > /volume1/Temp/tasks.txt
Bei mir kommt folgende Ausgabe:
Code:
            User: [root]
               ID: [40]
             Name: [Docker Backup json]
            State: [enabled]
            Owner: [root]
              App: [SYNO.SDS.TaskScheduler.Script]
          AppName: [#common:command_line#]
             Type: [daily]
       Start date: [0/0/0]
         Run time: [23]:[2]
     Next Trigger: [2024-02-13 23:02]
          CmdArgv: []
          Command: [#!/bin/bash
BACKUP_DIR="/volume2/docker/Docker_BackUps"
IGNORE_CONTAINERS=(jitsi_jicofo jitsi_jvb jitsi_prosody jitsi_web synology_docviewer_2 synology_docviewer_1)
EXPORT_DATE="$(date +%Y-%m-%d_%H-%M)"

[ ! -d "${BACKUP_DIR}" ] && mkdir -p "${BACKUP_DIR}"
echo "exporting container settings to ${BACKUP_DIR}"

for container in $(docker ps --format "{{ .Names }}"); do
    if grep -q "$container" <<< "${IGNORE_CONTAINERS[@]}" ; then
        echo "${container} is on ignore list. Skipping this container."
        continue
    else
        echo "${container} export"
        /usr/syno/bin/synowebapi --exec api=SYNO.Docker.Container.Profile method=export version=1 outfile="${BACKUP_DIR}/${container}_${EXPORT_DATE}.json" name="${container}"  2> /dev/null
    fi
done
find "$BACKUP_DIR" -name "*.json" -mtime +7 -exec rm {} \;
exit]
    Last Run Time: Mon Feb 12 23:02:01 2024
           Status: [Success]
 
Zuletzt bearbeitet:

Thonav

Benutzer
Sehr erfahren
Mitglied seit
16. Feb 2014
Beiträge
7.890
Punkte für Reaktionen
1.510
Punkte
274
Falls Du mich meinst - mein Auszug beinhaltet einen Teil der .txt Datei - als Beispiel nur den Teil für die Aufgabe Bitwarden als Docker zu installieren. Es gibt weitere Einträge, wie für Backups, etc.
 

ctrlaltdelete

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
13.633
Punkte für Reaktionen
5.809
Punkte
524
  • Like
Reaktionen: Thonav

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Vorteil: Im Aufgabenplaner ist nur ein Eintrag (statt 35) und die cron.sh und alle anderen Scripte lassen sich bequem sichern.
Das mag ein großer Vorteil sein, aber alle Kommandos werden über einen einzigen cron job abgearbeitet. D. h. man kann nur diesem einzelnen Job einen zeitlichen Trigger verpassen. Es gibt jedoch Jobs die z. B. alle 5 Minuten laufen sollen, andere hingegen alle 7 Tage.

Man kann natürlich einzelne Individualitäten in dem Script mit zusätzlichen if, else Anweisungen versehen und somit wieder in den Trigger eingreifen aber das macht das ganze weder einfacher noch übersichtlicher.

Dein Vorschlag lässt sich meines Erachtens nicht als allgemeingültige Alternative verkaufen.
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
6.057
Punkte für Reaktionen
1.855
Punkte
254
eine Übersicht erhalten
Probiere es mal bitte mit folgendem Befehl:
synoschedtask --get | grep "User:\|Name:\|Command:" | grep -v "AppName:" | sed 's/\\//g'
Das bringt dir eine Aufstellung von jedem Tasks, davon aber nur der User, Taskname und dem Kommando.
Das Ganze kann man in eine Textdatei schreiben lassen.
alle 5 Minuten laufen sollen, andere hingegen alle 7 Tage.
Wie ich in #3 schrieb, wird das mit einfachen if-Anweisungen gelöst.
das macht das ganze weder einfacher noch übersichtlicher
Ich finde das super einfach und übersichtlich, dazu gibt es für Bemerkungen u.a. auch die Raute im Script.
allgemeingültige Alternative verkaufen
Jemand mit etwas Scripterfahrung kann das umsetzen, alle anderen nicht. So wie immer im Leben, nicht jeder kann alles.
Ich war heute beim Lackierer. 1000 Euro will er haben. Und das für ein bisschen Lack und ein wenig Schleifpapier. Ich kann es aber leider nicht.
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Jemand mit etwas Scripterfahrung kann das umsetzen, alle anderen nicht.
Genau deshalb würde ich es nicht als allgemeingültige Lösung verkaufen wollen.
Es ist eben eine Alternative mit Einschränkungen und nicht für jeden gedacht bzw. zu gebrauchen.

Der Nachteil an einem einzigen Script ist, dass alle Befehle sukzessive abgearbeitet werden.
D. h. wenn man nicht explizit die einzelnen Befehle bei ihrem Aufruf in den Background versetzt so warten die folgenden Befehle auf ihre Ausführung bis die vorherigen Aufgaben abgeschlossen sind.
Der Cron Scheduluer hingegen feuert alle definierten Aufgaben parallel, auch wenn sie die gleiche Startzeit konfiguriert haben.
Das mag jetzt für die meisten wohl irrelevant sein aber die Script-Laufzeit muss wohl bei dieser Variante einkalkuliert werden.
Triggerzeitpunkt des Scripts durch den Cron Scheduler ist nicht gleich der auszuführenden Aufgabe an Stelle x des Scripts.
 
  • Like
Reaktionen: alexhell

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
6.057
Punkte für Reaktionen
1.855
Punkte
254
nicht für jeden gedacht
Das habe ich auch nie geschrieben, sondern nur, dass ich es so umgesetzt habe (siehe #3) und vielleicht ist hier und da jemand dabei, der sich von meinem Weg inspirieren lässt.

Nicht jede Sache in diesem Forum ist für jeden gedacht und gemacht. Der eine kann es umsetzen, ein anderer nicht.
Wenn wir für jedes Problem nur "allgemeingültige Alternativen" bringen dürften, würde das Forum vor lauter Problemen ersticken und es wären kaum Lösungen da.

Mein Aufbrezeln in #11 mit doppelten grep und sed vom synoschedtask ist auch nur eine billige Krückenlösung, die vielleicht für Heinz passt, aber bei Hans, Klaus und Bernd wiederum nicht. Heinz hat gefragt (Threadtitel: Einträge im Aufgabenplaner extrahieren als txt.file) , Heinz bekommt (s)eine Lösung. Was er daraus macht, ist seine Sache. ;-)

Wo ist eigentlich deine Lösung von Heinz seinem Problem? ;)
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Thonav

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Wo ist eigentlich deine Lösung von Heinz seinem Problem? ;)
Muss ich Heinz eine Lösung anbieten?

Ich hätte es auch wie du gemacht nur mit einem grep weniger ;)
synoschedtask --get | grep -w "User:\|Name:\|Command:" | sed 's/\\//g'
 
  • Like
Reaktionen: peterhoffmann

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
6.057
Punkte für Reaktionen
1.855
Punkte
254
  • Haha
Reaktionen: ctrlaltdelete

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Wer Kritik anbringt [...]
Ich würde nicht von Kritik sprechen allerhöchstens von einem konstruktiven Beitrag meinerseits. Ich weiß selbst, dass viele Wege bekanntlich nach Rom führen.

Du hast in Beitrag #3 dein Konzept präsentiert, was ich persönlich nicht schlecht reden möchte.
Das Einzige worauf ich aufmerksam machen wollte ist, dass es dabei auch einige andere Dinge zu berücksichtigen gibt außer den einzigen von dir genannten Vorteil den man damit erreicht.

[...] muss für eine bessere Lösung, mindestens für Lösungsansätze oder Verbesserungen, sorgen.
Es geht auch nicht immer darum, dass jeder selbst einen Lösungsvorschlag in eine Diskussion einbringt, sondern sich auch konstruktiv zu beteiligen und auch bereits eingebrachte Lösungsvorschläge hinterfragt oder auf die damit verbundenen Hindernisse oder Einschränkungen hinweist.

Also lieber @peterhoffmann bitte verstehe mich nicht falsch, ich wollte deinen gezeigten Vorschlag keinesfalls schlecht reden.

[...] ob Heinz uns die Lösung abnimmt.
Heinz. Wer ist eigentlich Heinz? :ROFLMAO:
 
Zuletzt bearbeitet:

insai

Benutzer
Mitglied seit
06. Jan 2020
Beiträge
43
Punkte für Reaktionen
5
Punkte
8
Hallo Leute

danke herzlichst für Euere Hilfe.

Danke für den Hinweis in #7 von ctrlaltdelete bzgl. root. Ich war auf der Console nur mitm Admin angemeldet, mit root klappts besser.

Ich habe mich nun für die Lösung #14 von luddi entschieden (übersichtlicher für mich), wobei ich nicht sagen will dass eine der anderen Lösungen nicht hilfreich wäre.

Nun habe ich mit der Ausgabe von synoschedtask --get die für mich nötigen Parameter in das Script übertragen, scheitere aber noch immer am Layout.
Code:
synoschedtask --get | grep -w "Name:\|Run time:\|Type:"| sed 's/\\//g' > /volume1/Temp/tasks.txt

Leider sind meine Linuxkenntnisse nur sehr eingeschränkt, so dass ich nun schon einige Zeit an der grossen Websuche war aber nicht das passende gefunden habe.

Die Scriptausgabe soll in ein .txt File auf der Synology erfolgen, txt Bezeichnung >Tagedatum<>Bezeichung>.txt.

Als übersichtliches Layout der Ausgabe sollte dann folgends werden:

Name: [Storage Report] Type: [weekly] Run time: [8]:[0]
Leerzeile
Name: [Storage Report] Type: [weekly] Run time: [8]:[0]
.
.
Könnt Ihr mir da bitte noch etwas unter die Arme greifen?

Danke noch mal herzlichst
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Lösung #14 von luddi entschieden
Ich möchte nicht behaupten, dass es meine alleinige Lösung war, sondern der Dank gilt eher @peterhoffmann. Ich hatte mich nämlich nur an seinem Befehl bedient und diesen etwas modifiziert, weil er mich nach meiner Lösung herausgefordert hatte ;)

txt Bezeichnung >Tagedatum<>Bezeichung>.txt.
Meinst du in etwa so?
Datum mit Uhrzeit (JJJJ-MM-TT_hh-mm-ss): /volume1/Temp/$(date +"%Y-%m-%d_%H-%M-%S")_tasks.txt

Nur mit Datum (JJJJ-MM-TT): /volume1/Temp/$(date +"%Y-%m-%d")_tasks.txt
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Benie und insai

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Als übersichtliches Layout der Ausgabe sollte dann folgends werden:

Name: [Storage Report] Type: [weekly] Run time: [8]:[0]
Leerzeile
Name: [Storage Report] Type: [weekly] Run time: [8]:[0]

Ich habe da einmal etwas zusammengebastelt. Es sieht zwar wild aus, aber das Ergebnis sollte deinen Anforderungen entsprechen.

Bash:
synoschedtask --get | grep -w "Name:\|Run time:\|Type:"| sed 's/\\//g' | sed 's/^[ \t]*//' | sed ':a;N;$!ba;s/\n/ /g' | sed 's/ Name: \[/\nName: \[/g' | sed -e 'G'

EDIT:
Falls man die Tasks alphabetisch sortiert haben möchte könnte man vor dem letzten sed ein sort einfügen.
Bash:
synoschedtask --get | grep -w "Name:\|Run time:\|Type:"| sed 's/\\//g' | sed 's/^[ \t]*//' | sed ':a;N;$!ba;s/\n/ /g' | sed 's/ Name: \[/\nName: \[/g' | sort | sed -e 'G'
 
Zuletzt bearbeitet:

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
6.057
Punkte für Reaktionen
1.855
Punkte
254
Da möchte man glatt dreimal auf den Like-Button hauen. (y)(y)(y);)
 


 

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