Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:scripting:schultag.sh]] 
#!/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
 [[anwenderwiki:scripting:schultag.sh]] anwenderwiki/scripting/schultag.sh.txt · Zuletzt geändert: 2013/03/26 22:53 von 127.0.0.1