#!/bin/bash # schultag.sh # Dieses Skript liest die Konfigurationsdateien "ferien.conf" und "ausnahmen.conf" # und beendet sich mit Fehlercode 0, falls der Aufruf an einem Schultag ist. # andernfalls beendet sich das Skript mit Fehlercode 99 # die Fehlercodes sind unten konfigurierbar # # Skript von Jesko Anschütz, Januar 2012 # Das Skript kann frei verwendet, angepasst, so gelassen oder auch nciht benutzt werden. ########### HIER WIRD KONFIGURIERT ############### # wo liegen die Config-Dateien? # Pfad mit abschließendem Schrägstrich config_pfad="/root/schultag/" # wie heißen die Dateien? # Dateiname ohne Pfad und ohne Schrägstrich ferien_conf="ferien_bw.conf" feiertage_conf="feiertage_bw.conf" ausnahmen_conf="ausnahmen.conf" # Welche Wochentage sind grundsätzlich Schulfrei? # Leerzeichen-getrennte Liste der Lokalen Kurznamen der Tage # (Deutsches System z.B. Mo Di Mi Do Fr Sa So) schulfreie_wochentage="Sa So" # In welchem Format stehen die Daten in den Config-Dateien? (Siehe # man date) datumsformat="%Y%m%d" # Vielleicht ist irgendwann eine Unterscheidung von Wochenende und Ferien sinnvoll # z.B. für Home-Backups, die ja keinen Sinn machen in 6 Wochen Sommerferien... exitcode_ferien=99 exitcode_wochenende=98 exitcode_feiertag=97 exitcode_schultag=0 ########### HIER DRUNTER MUSS NICHTS MEHR VERÄNDERT WERDEN! ################ # schauen wir mal, ob die Config-Dateien existieren und brechen ggf. ab. [ ! -e $config_pfad$ferien_conf ] && echo "Config-Datei $config_pfad$ferien_conf fehlt oder ist nicht lesbar!" [ ! -e $config_pfad$ausnahmen_conf ] && echo "Config-Datei $config_pfad$ausnahmen_conf fehlt oder ist nicht lesbar!" # Ausnahmen durchgehen und ggf. Schultag melden for ausnahmedatum in `awk '{print $1}' $config_pfad$ausnahmen_conf`; do if [ "$ausnahmedatum" == `date +$datumsformat` ] then exit $exitcode_schultag fi done for schulfrei in $schulfreie_wochentage; do if [ "$schulfrei" == `date +%a` ] then exit $exitcode_wochenende fi done for feiertag in `awk '{print $1}' $config_pfad$feiertage_conf`; do if [ "$feiertag" == `date +$datumsformat` ] then exit $exitcode_feiertag fi done for ferien in `awk '{print $1}' $config_pfad$ferien_conf`; do if [ "$ferien" != "#" ] then IFS="-" set -- $ferien if [ $1 -le `date +$datumsformat` ] && [ $2 -ge `date +$datumsformat` ] then exit $exitcode_ferien fi fi done exit 0