#!/bin/bash # timer.sh #right_timeplaner=1 # DEV: erzwungen, da nicht explizit hinterlegt / Prüfung evtl. löschen timer_scriptname="/usr/syno/synoman/webman/3rdparty/synOTR/synOTR-start.sh" #if [[ "$right_timeplaner" == "1" ]]; then if [[ "$page" == "timer" ]]; then [ -f "$usersettings/timertmp.txt" ] && rm "$usersettings/timertmp.txt" [ -f "$var" ] && rm "$var" fi if [[ "$page" == "timer-set-4" ]]; then [ -n "$timer_frequenz" ] || echo 'Frequenz konnte nicht übertragen werden' >> "$stop" fi # Funktionen if [[ "$page" == "timer-set-3" ]]; then [ -f "$usersettings/timertmp.txt" ] && rm "$usersettings/timertmp.txt" IFS=' ' for i in "$@"; do IFS="$backifs" if [[ "$i" == timer_day* ]]; then i=$(echo "$i" | sed -e 's/.*timer_day=//g' | sed -f includes/decode.sed) echo "$i" >> "$usersettings/timertmp.txt" fi done if test -f "$usersettings/timertmp.txt"; then timer=$(cat "$usersettings/timertmp.txt") [ -f "$usersettings/timertmp.txt" ] && rm "$usersettings/timertmp.txt" fi timer=$(echo $timer | sed 's/ /,/g;s/7/0/g') sed -i "/$variable=/d" "$var" echo "timer=\"$timer\"" >> "$var" [ -n "$timer" ] || echo 'Es wurde kein Tag ausgewählt!' >> "$stop" [ -n "$timer_hour" ] || echo 'Es wurde keine Stunde ausgewählt!' >> "$stop" [ -n "$timer_minute" ] || echo 'Es wurde keine Minute ausgewählt!' >> "$stop" if [[ "$timer_times" == "one" ]]; then echo '' fi fi if [[ "$page" == "timer-delete-query" ]] || [[ "$page" == "timer-delete" ]]; then [ -f "$var" ] && rm "$var" if [[ "$page" == "timer-delete-query" ]]; then echo '

Soll der Cronjob wirklich entfernt werden?

'$(echo "$timer_scriptname" | sed 's/\\//g')'


Ja   Nein

' >> "$stop" elif [[ "$page" == "timer-delete" ]]; then sed -i "/synOTR-start.sh/d" "/etc/crontab"; exit_delete=$? if [[ "$exit_delete" == "0" ]]; then echo '

Der Cronjob wurde gelöscht!

synOTR-start.sh


weiter
' >> "$stop" else echo '

Der Cronjob konnte leider nicht gelöscht werden!

'$(echo "$timer_scriptname" | sed 's/\\//g')'


weiter' >> "$stop" fi fi elif [[ "$page" == "timer" ]]; then echo '

synOTR Zeitplaner

' i="/usr/syno/synoman/webman/3rdparty/synOTR/synOTR-start.sh" echo '



' crontab=$(cat /etc/crontab | awk -F $'\t' 'NR > 1 {print $1 " " $2 " " $3 " " $4 " " $5 " " $6 " " $7 " " $8}' | sed 's/ $//' | grep -E 'synOTR-start.sh') if [ -n "$crontab" ]; then # bei vorhandenem Zeitplan IFS=" " croncount=0 for i in $crontab; do IFS="$backifs" croncount=$(( croncount + 1 )) unset cron_minute cron_hour cron_day cron_scriptname encode_cron_scriptname dayname cron_minute=$(echo "$i" | awk '{print $1}') cron_hour=$(echo "$i" | awk '{print $2}') cron_day=$(echo "$i" | awk '{print $5}') timer_scriptname=$(echo "$i" | sed 's/ $//;s#.*/bin/bash ##') encode_timer_scriptname=$(echo "$timer_scriptname" | sed -f includes/encode.sed) # Aufklappbar: echo '

Aktueller Croneintrag für synOTR

' if [[ "$cron_day" == "*" ]]; then echo '' else dayname=$(echo "$cron_day" | sed 's/,/, /g;s/1/Montag/g;s/2/Dienstag/g;s/3/Mittwoch/g;s/4/Donnerstag/g;s/5/Freitag/g;s/6/Samstag/g;s/0/Sonntag/g;') echo '' fi if [[ "$cron_hour" == *\/1 ]]; then echo ' ' elif [[ "$cron_hour" == *\/[2-9] ]] || [[ "$cron_hour" == *\/[1-2][0-3] ]]; then echo ' ' else echo ' ' fi echo '
Programmpfad: '$(echo "$timer_scriptname" | sed 's/\\//g')'
Wochentag(e): Jeden Tag
Wochentag(e): '$dayname'
Uhrzeit / Intervall: von '$(echo "$cron_hour" | sed 's/-.*//;s#\(^[0-9]$\)#0\1#g')':'$(echo "$cron_minute" | sed 's#\(^[0-9]$\)#0\1#g')' Uhr bis '$(echo "$cron_hour" | sed 's/.*-//;s/\/.*//')':'$(echo "$cron_minute" | sed 's#\(^[0-9]$\)#0\1#g')' Uhr - stündlich
Uhrzeit und Intervall: von '$(echo "$cron_hour" | sed 's/-.*//;s#\(^[0-9]$\)#0\1#g')':'$(echo "$cron_minute" | sed 's#\(^[0-9]$\)#0\1#g')' Uhr bis '$(echo "$cron_hour" | sed 's/.*-//;s/\/.*//;s#\(^[0-9]$\)#0\1#g')':'$(echo "$cron_minute" | sed 's#\(^[0-9]$\)#0\1#g')' Uhr - alle '$(echo "$cron_hour" | sed 's/.*\///')' Stunden
Uhrzeit: um '"$(echo "$cron_hour" | sed 's#\(^[0-9]$\)#0\1#g')"':'"$(echo "$cron_minute" | sed 's#\(^[0-9]$\)#0\1#g')"' Uhr
Crontab: '"$i"'


' echo '

  


' done echo '
' fi fi if [[ "$timer_times" == "one" ]]; then unset checked_more checked_one="yes" elif [[ "$timer_times" == "more" ]]; then unset checked_one checked_more="yes" fi if [[ "$page" == timer-set-* ]]; then if [[ "$page" == "timer-set-1" ]]; then unset disable_times else disable_times="yes" fi fi if [[ "$page" == timer-set-* ]] && [[ "$page" != "timer-set-5" ]] && [[ "$page" != "timer-delete-query" ]] && [[ "$page" != "timer-delete" ]]; then echo '

 

Zeitplan einrichten

» 1. Wie oft soll synOTR pro Tag (pro Woche) ausgeführt werden?
INFO: Der DSM-Sicherheitsbereater wird den zusätzlichen Croneintrag (da für DSM unbekannt) bemängeln!



' echo '
' fi if [[ "$page" == timer-set-* ]]; then if [[ "$page" == "timer-set-2" ]] || [[ "$page" == "timer-set-3" ]] || [[ "$page" == "timer-set-4" ]]; then if [[ "$timer_times" == "one" ]] || [[ "$timer_times" == "more" ]]; then echo '

» 2. An den folgenden Tagen ausführen:

' tage=(1 2 3 4 5 6 0) for tag in ${tage[*]}; do unset found IFS="," for check in $timer; do IFS="$backifs" if [[ "$check" == "$tag" ]]; then found="yes" fi done if (( $tag == 1 )); then dayname='Montag' elif (( $tag == 2 )); then dayname='Dienstag' elif (( $tag == 3 )); then dayname='Mittwoch' elif (( $tag == 4 )); then dayname='Donnerstag' elif (( $tag == 5 )); then dayname='Freitag' elif (( $tag == 6 )); then dayname='Samstag' elif (( $tag == 0 )); then dayname='Sonntag' fi if [[ "$page" == "timer-set-2" ]]; then unset disable_day unset disable_time unset disable_time2 unset disable_frequenz fi if [[ "$page" == "timer-set-3" ]] || [[ "$page" == "timer-set-4" ]] || [[ "$page" == "timer-set-5" ]]; then disable_day="yes" disable_time="yes" fi if [[ "$page" == "timer-set-4" ]] || [[ "$page" == "timer-set-5" ]]; then disable_time2="yes" disable_frequenz="yes" fi if [[ "$found" == "yes" ]]; then echo '


' else echo '


' fi done echo '

 


' if [[ "$timer_times" != "more" ]]; then echo '

» 3. Ausführungszeit:

' else echo '

» 3. Ausführungszeit von:

' fi echo '

  :

' if [[ "$timer_times" == "more" ]]; then if [[ "$page" == "timer-set-3" ]] || [[ "$page" == "timer-set-4" ]]; then bc_minute=$(gawk '{print $0/6*10}' <<< $timer_minute | sed 's/\..*//;s/^0$/00/') bc_minus="$timer_hour$bc_minute" bc_diff=$((2359-bc_minus)) bc_max=$(echo "$bc_diff" | sed 's/[0-9][0-9]$//') bc_x=$((bc_max+1)) echo '

» 4. Anzahl der Wiederholungen:

' fi fi if [[ "$timer_times" == "more" ]] && [[ "$page" == "timer-set-4" ]]; then echo '

» 5. Ausführungszeit bis:

  :


' fi echo '
' else echo 'treffe bitte eine Auswahl!' >> "$stop" fi elif [[ "$page" == "timer-set-5" ]]; then dayname=$(echo $timer | sed 's/,/, /g;s/1/Montag/g;s/2/Dienstag/g;s/3/Mittwoch/g;s/4/Donnerstag/g;s/5/Freitag/g;s/6/Samstag/g;s/0/Sonntag/g;') show_hour=$(echo "$timer_hour" | sed 's#\(^[0-9]$\)#0\1#g') show_to_hour=$(echo "$timer_to_hour" | sed 's#\(^[0-9]$\)#0\1#g') show_minute=$(echo "$timer_minute" | sed 's#\(^[0-9]$\)#0\1#g') [ -n "$timer_scriptname" ] || echo 'Scriptname konnte nicht übertragen werden' >> "$stop" [ -n "$dayname" ] || echo 'Dayname konnte nicht übertragen werden' >> "$stop" [ -n "$timer_hour" ] || echo 'Stunde konnte nicht übertragen werden' >> "$stop" [ -n "$timer_minute" ] || echo 'Minute konnte nicht übertragen werden' >> "$stop" if [[ "$timer_times" == "more" ]]; then [ -n "$timer_to_hour" ] || echo 'Stunde -bis- konnte nicht übertragen werden' >> "$stop" [ -n "$timer_frequenz" ] || echo 'Frequenz konnte nicht übertragen werden' >> "$stop" fi if [ ! -f "$stop" ]; then echo '

 

Folgende Daten werden übernommen...


Das Script '"$timer_scriptname"'

wird am '"$dayname"' ' if [[ "$timer_times" != "more" ]]; then echo 'um '$show_hour':'$show_minute' Uhr ausgeführt!

' else echo '

in der Zeit von '$show_hour':'$show_minute' Uhr bis '$show_to_hour':'$show_minute' Uhr, ' if [ -n "$timer_frequenz" ]; then if (( $timer_frequenz == 1 )); then echo 'stündlich ausgeführt!

' else echo 'alle '$timer_frequenz' Stunden ausgeführt!

' fi fi fi echo '


' if [ -n "$timer_to_hour" ]; then timer_to_hour="-$timer_to_hour" fi if [ -n "$timer_frequenz" ]; then timer_frequenz="/$timer_frequenz" fi echo '

 

Folgender Eintrag wird an CRONTAB übergeben:

'$timer_minute $timer_hour$timer_to_hour$timer_frequenz' * * '$timer'

' fi elif [[ "$page" == "timer-set-6" ]]; then dayname=$(echo $timer | sed 's/,/, /g;s/1/Montag/g;s/2/Dienstag/g;s/3/Mittwoch/g;s/4/Donnerstag/g;s/5/Freitag/g;s/6/Samstag/g;s/0/Sonntag/g;') if [ -n "$timer_to_hour" ]; then timer_to_hour="-$timer_to_hour" fi if [ -n "$timer_frequenz" ]; then timer_frequenz="/$timer_frequenz" fi timer_delete=$(echo "$timer_scriptname" | sed 's/.*\///g') timer_scriptname_escape=$(echo "$timer_scriptname" | sed 's/ /\\ /g') sed -i "/"$timer_delete"/d" "/etc/crontab" echo -e "$timer_minute\t$timer_hour$timer_to_hour$timer_frequenz\t*\t*\t$timer\troot\t/bin/bash "$timer_scriptname_escape"" >> /etc/crontab echo -e "$timer_minute\t$timer_hour$timer_to_hour$timer_frequenz\t*\t*\t$timer\troot\t/bin/bash "$timer_scriptname_escape"" >> "$usersettings/timertmp.txt" echo '' fi fi #fi