#! /bin/sh # # "kidsControl" by mo2mo, Vers. 1.42, 2015-11-24 # Der Skript steht unter GNU General Public License (GPLv3). Hinweise dazu dort: # http://www.gnu.de/documents/gpl.de.html # # Der Skript "kidsControl" dient zur Begrenzung der Nutzungszeit der User. Er kann durch # einen entsprechenden Aufruf im Ordner "/etc/xdg/autostart" gestartet oder besser, weil # dann nicht vom Nutzer abschaltbar, durch einen Eintrag in der Datei ../PostLogin/Default. # Die Idee zum Skript basiert auf "JueWe" im deutschen Forum von ubuntuusers. # # Das Skript bietet die Möglichkeit, für verschiedene Nutzer täglich wechselnde Zeitlimits # in Minuten und durch Uhrzeiten, zu denen unabhängig von der genutzten Zeit ausgeloggt wird. # Diese Zeiten sind alle in einer einfachen Tabelle "Limits4Kids.csv" einzutragen. Das Skript # prüft, welche Restriktion zuerst greift. Es sind verschiendene Zeit-Optionen möglich. # # Mögliche Zusatzzeiten errechnen sich automatisch aus dem unverbrauchten Wochen-Limit. # Diese wird unter Woche auf max. eines Tages-Limit begrenzt. Doch am pcDay kann, wenn # während der Woche der PC nicht genutzt wurde, ein ganzes Wochen-Limit verbraucht werden. # Der Sonntag ist im Skript der Tag mit dem max. möglichen Tages-Guthaben (s. "pcDay") # Im Terminal kann durch "kidsControl test" ein Test-Modus gestartet werden. # # Die abgelaufene Nutzungszeit wird täglich in eine neue Datei geschrieben, welche die Dauer # der einzelnen Sitzungen des Tages festhält. # # Beim Einloggen erzeugt das Skript "kidsControl" eine Datei "/tmp/$file_name" und schreibt # in diese einen Zeitwert (in Sekunden seit 1970) hinein. Die Funktion "kc_consumed" fügt, # darin, aufgerufen beim Ausloggen durch Eintrag in der Datei "/etc/../PostSession/Default", # einen zweiten Zeitwert hinzu, liest die beiden Werte aus, berechnet die Sitzungsdauer in # Minuten und schreibt diesen Wert dann in eine Datei "./hist/$file_name-ut". # # Diese ut-Dateien werden für die Analyse der Nutzerzeiten benötigt. Die berechnete PC-Zeit # wird genutzt, um vorherige Sitzungen des Nutzers am gleichen Tag zu berückschtigen sowie # die Woche auszuwerten und eine Tages-Zusatzzeit zu berechnen. So kann "gesparte" Zeit an # anderen Tagen der gleichen Woche zu nutzen werden. # # Anregungen oder Kritik an mo2mo auf Bitbucket: #LNK https://bitbucket.org/mo2mo/kidscontrol # # #=============================================================================================== ### Funktionen #----------------------------------------------------------------------------------------------- # Die Anzahl der Minuten bis zum Logout-Zeitpunkt ermitteln kc_calc() { Hnow="$(date +%H | sed -e 's/^0*//')" && [ -z "$Hnow" ] && Hnow=0 # Start-Stunden Mnow="$(date +%M | sed -e 's/^0*//')" && [ -z "$Mnow" ] && Mnow=0 # Start-Minuten Hanf="${UZanf%:*}" && [ -z $Hanf ] && Hanf=0 # PCanfangs-Stunde Manf="${UZanf#*:}" && [ -z $Manf ] && Manf=0 # PCanfangs-Minuten Hend="${UZend%:*}" && [ -z $Hend ] && Hend=0 # PCend-Stunde Mend="${UZend#*:}" && [ -z $Mend ] && Mend=0 # PCend-Minuten [ $ferr -ge 2 ] && echo "lgDay=$lgDay ud dwghCRDT=$dwghCRDT ud Hend=$Hend ud Mend=$Mend" if [ "$lgDay" = "ja" ] && [ $dwghCRDT -gt 0 ] ; then Htzz=$(($Hend+($Mend+$dwghCRDT)/60)) Mtzz=$(($Mend+$dwghCRDT-(($Mend+$dwghCRDT)/60)*60)) UHR="$Htzz:$Mtzz" && Hend="$Htzz" && Mend="$Mtzz" else UHR="$UZend" fi [ $ferr -ge 2 ] && echo UHR="$UHR ud Hend=$Hend ud Mend=$Mend" MIN1="$((($Hnow - $Hanf) * 60 + $Mnow - $Manf))" # Gesamt-Anfangs-Differenz in Minuten MIN2="$((($Hend - $Hnow) * 60 + $Mend - $Mnow))" # Gesamt-End-Differenz in Minuten [ "$lgDay" = "ja" ] && MIN2=$(($MIN2 + $TZzit)) # abends länger "surfen" MIN3=$(($MIN2 - 3)) # Gesamt-End-Differenz abzüglich 3 Minuten für den Count-Down INFO="Hanf Manf Hnow Mnow Hend Mend MIN1 MIN2 MIN3" [ $ferr -ge 2 ] && for i in $INFO; do echo "$i = $((${i}))"; done # Zur Fehlersuche: Anzeige der berechneten Zahlenwerte [ $MIN1 -lt 0 ] && kc_message "M2" && $line && sleep 5 && kc_logout # ist Wert negativ = PC zu früh gestartet, PC wird ausgeloggt. [ $MIN3 -lt 0 ] && kc_message "M9" && $line && sleep 2 && kc_logout shtdwn # ist Wert negativ = PC-Zeit abgelaufen, PC wird ausgeschaltet. } # in laufender Sitzung verbrauchte Zeit ermitteln, Login-Versuche auswerten kc_consumed() { echo "$(date +"%s")" >> /tmp/$file_name # Zeit in Sekunden seit „1970-01-01 00:00:00 UTC“ kc_read "R4" "/tmp/$file_name" && echo "$read_DIF" >> ./hist/${file_name}-ut #NEW Auswerten der Dauer: 0= außerhalb von Tageszeit oder Guthaben; 1= Testlauf; 3 /tmp/$file_name # Zeit in Sekunden seit „1970-01-01 00:00:00 UTC“ kc_read "R1" "$Name" "1" "UR" if [ -z "$read_COL" ] ; then kc_message "M10" ; exit ; fi # UR: Benutzer fehlt in Konfigurations-Datei.conf kc_read "R1" "$Name" "2" "LD" && [ "$read_COL" = "ja" ] && lgDay="$read_COL" || lgDay=nein # LD: abends länger surfen kc_read "R1" "$Name" "3" "PD" && pcDay="$read_COL" # PD: PC-Day = Tag mit max. Guthaben kc_read "R1" "$Name" "4" "TZ" && [ "$read_COL" = "ja" ] && TZzit="$read_COL" || TZzit=nein # TZ: Tages-Zusatzzeit, ja oder -- kc_read "R1" "$Name" "5" "WB" && WBday="$read_COL" && [ -z $WBday ] && WBday=So # WB: Wochenbeginn, So oder Mo kc_read "R1" "$Name" "6" "WG" && WEEK="$read_COL" && CZ="$COLzahl" # WG: Wochen-Limit in Minuten echo "WBday = Wochenbeginn: -$WBday-" for i in $(date +%u) ; do [ $ferr -gt 1 ] && echo "Wochentag --$i--" COL=$(($CZ+$i)) && kc_read "R1" "$Name" "$COL" "Limit" && LIMIT="$read_COL" # Zeit-Limit pro Wochentag echo "LIMIT = Tages-Limit : $LIMIT min" # Tages-Limit in Minuten [ ! -z "$pcDay" ] && kc_read "R1" "Woche" "$COL" "WT" || dayZl=6 # PC-Day: COL11 = Samstag oder dayZl=6 [ $ferr -gt 1 ] && echo "Zeile-97: [ $pcDay = $read_COL ] ud dayZl="$i" od dayZl=0" # Fehler-Anzeige [ $pcDay = $read_COL ] && dayZl="$i" || dayZl=0 # pcDay=aktueller Wochentag oder nicht [ $ferr -gt 1 ] && echo "Si=$i ud COL=$COL ud CZ=$CZ" if [ "${WBday}" = "Mo" ] ; then # Mo = WT= Mo-Fr = die "normale" Woche [ $i -le 5 ] && COL=$(($CZ+8)) # Zeit-Fenster für Wochentage: WT=$CZ+8; Mo-Fr [ $i -eq 6 ] && COL=$(($CZ+9)) || ( [ $i -eq 7 ] && COL=$(($CZ+10)) ) # Zeit-Fenster fürs WochenEnde: Sa=$CZ+9; So=$CZ+10 [ $ferr -gt 1 ] && echo "Zeile-103: Si=$i ud COL=$COL ud CZ=$CZ - Mo" else # So = Tag, nach dem es an fünf Folgetagen früh raus geht. [ $i -le 4 ] && COL=$(($CZ+8)) || ( [ $i -eq 7 ] && COL=$(($CZ+8)) ) # Zeit-Fenster für Wochentage: WT=$CZ+8; So-Do [ $i -eq 5 ] && COL=$(($CZ+9)) || ( [ $i -eq 6 ] && COL=$(($CZ+10)) ) # Zeit-Fenster fürs WochenEnde: Fr=$CZ+9; Sa=$CZ+10 [ $ferr -gt 1 ] && echo "Zeile-107: Si=$i ud COL=$COL ud CZ=$CZ - So" fi kc_read "R1" "$Name" "$COL" && LIM="$read_COL" # Wochen-Guthaben done #NEW Ferien-Zeiten aus dem Internet? # Zeit-Fenster für Ferientage: FT=$CZ+11 UZanf=${LIM%-*} && echo "UZanf = Beginn: $UZanf Uhr" # Startzeit, z.B.: 10:00 Uhr UZend=${LIM#*-} && echo "UZend = Ende: $UZend Uhr" # End-Zeit, z.B.: 20:30 Uhr echo "pcDay = PC-Day: -${pcDay}-" # PC-Day echo "WEEK = Wochenguthaben: $WEEK min" echo "lgDay = PC später aus : $lgDay" } # Log-out oder PC abschalten - Aktionen, die im eigenen Linux anders sind, bitte oben anpassen! kc_logout() { if [ -z "$DESKTOP_SESSION" ] ; then DESK="\"$HN\", Desktop unbekannt" else kc_replace "$DESKTOP_SESSION" && DESK="\"$HN\" mit \"${RP}\"-Desktop" fi if [ "$1" = "shtdwn" ] ; then echo "Starte Abschalten für Computer $DESK" [ ! $ferr -ge 1 ] && `$PC_down` else echo "Starte Log-out für Computer $DESK" [ ! $ferr -ge 1 ] && `$log_Out` fi exit } # Definitionen und Versand der Nachrichten - Inhalte dem Nutzeralter entsprechend anpassen ;-) kc_message() { for i in $1; do case "$i" in M0a) Mx="$Name, $sessINFO" ;; M0b) Mx="Du hast Deinen Rechner bereits $UT Minuten genutzt." ;; M1) Ma="Deine Rechnerzeit für heute" [ $AT -gt 0 ] && Mx="${Ma} beträgt insgesamt" || Mx="${Ma} beträgt" [ $AT -gt 0 ] || [ $UT -gt 0 ] && Mx="Deshalb hast Du heute noch" Mx="$Mx $PCtime Minuten." ;; M2) Mx="$Name, Du bist zu früh! Deine PC-Zeit beginnt um $UZanf Uhr." ;; M3) Mx="$Name, das Ende naht. Du hast noch drei Minuten." ;; M4) Mx="$Name, jetzt ist aus die Maus. Schließe Deine offenen Dateien." ;; M5) Mx="Du wirst jetzt abgemeldet. Bis morgen!" ;; M6) Mx="$Name, Du hast für heute $AT Minuten zusätzlich bekommen." ;; M7) Mx="$Name, heute ist spätestens um $UHR Uhr der PC aus." ;; M8) Mx="Du hast diese Woche genug am PC gespielt. Ab Montag gibt's neue Zeit!" ;; M9) Mx="Deine Zeit für heute ist aus. Du wirst jetzt abgemeldet. Bis morgen!" ;; M10) Mx="Benutzer $Name muss in der Konfig-Datei noch anlegt werden." ;; M11) Mx="Die Datei $(basename $0).ini\" wurde nicht gefunden." ;; esac `$message "$timePic" "$Mx"`; MN=$? # Programm und Bild s. "kidsControl.ini" [ $MN -ge 1 ] && (echo "Desk-Info-$1: $Mx" ; $line) done } # Not-Schalter, Mutti-Freigabe kc_parents() { #NEW Not-Schalter echo "Mutti-Freigabe" } # Unterfunktion zum Auslesen der Tabellen kc_read() { read_COL=; read_SUM=; case "$1" in R1) L4K="Limits4Kids.csv" read_COL=$(awk -F',' -v name=$2 -v col=$3 'match($1,name) {print $col}' "$L4K") # Werte für Benutzer aus der Konfig-Tabelle einlesen read_COL=$(echo $read_COL | sed 's/ //') ;; R2) read_SUM=$(awk '{ sum += $0 } END { printf sum }' "$2") # Summe bilden ;; R3) read_SUM=$(awk -F',' -v name=$2 -v col=$3 'match($2,name) NR>1 {summe += $col } END { print summe}' "$4") # Summe einer bestimmten Spalte bilden ;; R4) read_DIF=$(awk '{getline n; printf "%.0f\n", (n - $0)/60}' $2) # Differenz, (Zeile 1 minus Zeile 2) geteilt durch 60 = min ;; esac [ -z $read_SUM ] && INFO="$read_COL" || INFO="${read_COL}\" u. SUM: \"$read_SUM" [ $ferr -gt 1 ] && echo "read-$4, COL$3: \"${INFO}\"" && COLzahl="$3" || COLzahl="$3" #LNK https://wiki.ubuntuusers.de/awk#Spalten-ausgeben } # 1. Buchstabe groß kc_replace() { RP="$(echo $(echo $1|cut -c1|tr [a-z] [A-Z];echo $1|cut -c2-)|sed 's/ //')" # läuft auch auf einem Router } # Bereits genutzte PC-Zeit aus Datei ermitteln kc_residual() { UT=0 && datName="./hist/${file_name}-ut" [ -f ${datName} ] && kc_read "R2" "$datName" && UT="$read_SUM" echo "UT = $UT min = bereits verbrauchte PC-Zeit" && $line # insgesamt verbrauchte PC-Zeit in Minuten } # Anzahl der heutigen Sitzungen. kc_sess() { [ -z "$1" ] && file_sess="./hist/$file_name-ut" || file_sess="$1" [ ! -f ${file_sess} ] && sessZahl=0 || sessZahl=$(cat ${file_sess} | wc -l) [ $sessZahl -gt 1 ] && szl=2 || szl=$sessZahl #NEW Aanzahl der 0-Sitzungen = test separat zählen case "$szl" in 0) sessINFO="dies ist heute Deine erste Sitzung." ;; 1) sessINFO="Du hattest heute schon eine Sitzung." ;; 2) sessINFO="Du hattest heute schon $sessZahl Sitzungen." ;; esac [ -z "$1" ] && kc_message "M0a" # Programm und Bild s. "kidsControl.ini" } # PC--Nutzungs-Zeit in Abhängigkeit von End-, verbrauchter und Zusatz-Zeit kc_time() { PCtime="$(($LIMIT + $AT - $UT))" # PC-Zeit in Minuten = Limit + Zusatz - verbrauchter Zeit [ $UT -gt 0 ] && kc_message "M0b" # Anzeige der bereits verbrauchten PC-Zeit if [ $MIN2 -lt $PCtime ] ; then PCtime="$MIN3" # PC-Zeit in Minuten bis End-Zeit [ $AT -gt 0 ] && kc_message "M6 M7" else if [ $MIN2 -gt $PCtime ] && [ $(($LIMIT + $AT)) -gt $(($UT + 1)) ] ; then [ $AT -gt 0 ] && kc_message "M6 M1 M7" || kc_message "M1" # Info-Anzeige zur PC-Zeit: M6, M1 und M7 oder M1 else kc_message "M9" # Info-Anzeige zur PC-Zeit: M9; Zeit bereits abgelaufen kc_logout # PC wird ausgeloggt fi fi echo "PC-Freigabe für $PCtime min, max. bis $UHR Uhr" && $line # max. mögliche PC-Zeit in min und Uhrzeit [ $ferr -ge 1 ] && sleep 10 || sleep ${PCtime}m } # Programm-Variable aus kidsControl.ini einlesen Anpassung in der ini.-Datei vornehmen! kc_variable() { #NEW "session / desktop" automatisch finden, zwecks Wahl des richtigen Logout-Kommandos if [ -f "$0.ini" ] ; then # 'INFO="PC_down log_Out message timePic" && for i in $INFO; do echo "$i" ; done' PC_down=$(grep -m1 "PC_down" "$0.ini" | cut -d= -f2) # Abschalten, s. Funktion "kc_logout" log_Out=$(grep -m1 "log_Out" "$0.ini" | cut -d= -f2) # Ausloggen, s. dito. message=$(grep -m1 "message" "$0.ini" | cut -d= -f2) # Desktop-Nachrichten s. "kc_message" timePic=$(grep -m1 "timePic" "$0.ini" | cut -d= -f2) # Nachrichten-Bild, s. dito else echo "Die Datei \"$0.ini\" wurde nicht gefunden." kc_message "M11" && exit fi } # Warnungen kurz vor Ende der Nutzungs-Zeit kc_warn() { kc_message "M3" echo "Warn1: $Mx" && [ $ferr -ge 1 ] && sleep 2 || sleep 2m kc_message "M4" echo "Warn2: $Mx" && [ $ferr -ge 1 ] && sleep 2 || sleep 55 kc_message "M5" echo "Warn3: $Mx" && [ $ferr -ge 1 ] && sleep 2 || sleep 5 } # Auswertung der Nutzungsdauer aller Sitzungen einer Woche kc_week() { anz=0; dwghCRDT=0; maxCREDT=0; kw=$(date +%V); kw1=0; nr=0; weekVRBR=0; ws=0 # Variable vorbelegen file_heat="KW,Benutzer,Sitzungen,Verbrauch,Guthaben," file_year="./hist/$(date +%G)_${HN}_year.csv" && FY="$file_year" # Name der Jahres-Tabelle: "Jahr_PC-Name_year.csv" kc_read "R3" "$Name" "5" "$FY" && SY=$read_SUM # Addieren der Guthaben-Spalte pro Nutzer [ ! -z $SY ] && dwghCRDT=$(($SY / $(grep -ic "$Name" "$FY") * $LIMIT / $WEEK)) # Tages-Zusatz, ermittelt dem Durchschnitt der Wochen-Guthaben var_d=$(date --help|grep -m1 univer) 2> /dev/null && [ $? -eq 0 ] &&var_d=||var_d="0000.00" # Checken, ob Datei-Datum zu modifizieren ist if [ ! "$TZzit" = "ja" ] ; then echo "TZzit = Tages-Zuschlag: gesperrt" && TZzit=0 && $line else echo "TZzit = $dwghCRDT min Tages-Zuschlag" && TZzit=$dwghCRDT && $line fi for i in ./hist/*_$USER*-ut ; do [ $ferr -gt 1 ] && echo "Si : --$i"-- [ "$i" = "./hist/*_$USER*-ut" ] && break # gibt's vom Nutzer ut-Dateien? kw=${i%%_*} && kw=${kw##*/} [ $ferr -gt 1 ] && echo "Zeile-265: kw = --$kw--" [ $(date +%V) -ne $kw ] && MELD="einer vergangenen" || MELD="der aktuellen" if [ $kw1 -ne $kw ] && [ $kw1 -ne 0 ] ; then if [ $(date +%V) -ne $kw1 ] ; then file_turn="$kw1,$Name,$weekSESS,$weekVRBR,$weekCRDT," kc_year "$FW" "$FY" # Erstellen von Einträgen in der Wochen- und Jahres-Tabelle fi ws=0 && weekVRBR=0 fi [ $ferr -gt 1 ] && echo "1--$kw--" nr=$(($nr + 1 )) ws=$(($ws + 1 )) for j in ./hist/${kw}_${USER}_*-ut ; do while true; do file_week="${kw}_${USER}_week" && FW="$file_week" # Name der Wochen-Tabelle: "Kalenderwoche_Nutzer_week" [ -f ./hist/${file_week} ] && break # Wochen-Auswertung bereits vorhanden [ $ws -eq 1 ] && echo "---- Berechnung $MELD Woche ----" anz=$(($anz + 1 )) [ $ferr -gt 1 ] && echo "Nr.$anz = $i" # Anzahl aller ut-Dateien des Nutzers var_i=$(echo ${i##*_} | cut -d- -f1)${var_d} [ $ferr -gt 1 ] && echo "var_i=${var_i}" echo "ws = ${ws}. PC-Nutzungstag der Woche: $(date -d "${var_i}" +%d.%m.%Y)" # Datum des Nutzungstag in der Woche anzeigen [ -f "$i" ] && kc_read "R2" "$i" && UT="$read_SUM" || break kc_sess "$i" weekSESS=$(($weekSESS + $sessZahl)) weekVRBR=$(($weekVRBR + $UT )) weekCRDT=$(($WEEK - $weekVRBR )) maxCREDT=$(($weekCRDT / (8 / $(date +%u)) - ($LIMIT * (8 - $(date +%u))))) echo "Dses = $sessZahl x am Tag am PC gesessen." echo "UT = $UT min am Tag den PC benutzt." echo "mxPd = $maxCREDT min max. Guthaben für PC-Day" # Das Guthaben wird vor der 1. Tages-Sitzung gutgeschrieben echo "Dwgh = $dwghCRDT min Tages-Zusatz im Wochen-Durchschnitt" # Berechnung aus Jahresliste echo "Wses = $weekSESS x in der Woche am PC gesessen." echo "Wvbr = $weekVRBR min in der Woche den PC benutzt." echo "Wgth = $weekCRDT min Wochen-Rest-Guthaben" && $line #echo "[ "$(date +%u)" -eq "$dayZl" ] ud maxCREDT=$maxCREDT od maxCREDT=$TZzit" [ "$(date +%u)" -eq "$dayZl" ] && maxCREDT=$maxCREDT || maxCREDT=$TZzit # Zusatz-Guthaben in Abhängigkeit vom PC-Day [ $ferr -gt 1 ] && echo "Zeile-301: [ $(date +%V) -eq $kw ] und break" [ $(date +%V) -eq $kw ] && break break done [ $ferr -gt 1 ] && echo "Zeile-305: [ $nr -eq 1 ] und nr=0 + kw1="$kw" und break" [ $nr -eq 1 ] && nr=0 && kw1="$kw" && break done [ $ferr -gt 1 ] && echo "Zeile-307: kw1 = --$kw1--" done [ $ferr -gt 1 ] && echo "Zeile-309: [ $(date +%V) -eq $kw ] und AT=$maxCREDT" [ $(date +%V) -eq $kw ] && AT=$maxCREDT || AT=0 # Zusatz-Guthaben #NEW Zusatz-Zeit übers Home-Netz // Internet // Cloud? echo "AT = $AT min = zusätzliche PC-Zeit" # zusätzliche PC-Zeit für den Tag in Minuten } # Jahres- und Wochen-Tabellen, als Unter-Funktion von "kc_week", erstellen kc_year() { [ $ferr -gt 1 ] && echo "Zeile-317: --$1-- und --$2--" for i in $1; do [ -f "./hist/$1" ] && break # Abbruch, wenn Wochen-Tabelle vorhanden echo "$file_heat" > "./hist/$1" # Erstellen einer Wochen-Tabelle mit den echo "$file_turn" >> "./hist/$1" # Werten der bereits abgelaufenen Woche if [ ! -f "$2" ] ; then echo "$file_heat" > "$2" # Erstellen einer neuen Jahres-Tabelle echo "$file_turn" >> "$2" # Befüllen einer vorhandenen Jahres-Tabelle else # mit den Werten der abgelaufenen Woche(n) echo "$file_turn" >> "$2" # dito. fi find . -name ${kw1}_${USER}*-ut -exec rm {} \; # Löschen der ausgewerteten ut-Dateien (Taginfo) done } #=============================================================================================== ### main #----------------------------------------------------------------------------------------------- # preparing script kc_variable # Skript-Variable aus "kidsControl.ini" einlesen [ "$1" = "test" ] && [ ! -z "$2" ] && USER="$2" && HN=mo2mo || HN=$(hostname -s) # Test-User : momo, max oder moritz und hostName=mo2mo file_name=$(date +%V)_${USER}_$(date +%Y%m%d) # Datei-Name: Kalenderwoche_Nutzer_Tagesdatum kc_replace "$USER" && Name="$RP" # Nutzername: 1. Buchstabe groß if [ "$1" = "test" ] ; then ferr=1 && find /tmp/ -type f -name $file_name* -exec rm {} \; 2> /dev/null # Im Test-Modus werden beim Start die tmp-Dateien gelöscht [ "$3" = "deep" ] && ferr=2 kc_replace "$3$1" && echo "Start = $(date); $RP mit Nutzer $Name" # Datum komplett und Nutzer mit Testmodi anzeigen else ferr=0 fi # script at work cd $(dirname $0) && line="echo -------------------------------------------" # In den Ordner wechseln, in dem sich der Skript befindet. if [ "$1" = "out" ] ; then ## out = Nutzer meldet sich ab kc_consumed # Dauer der aktuellen Sitzung berechnen else ## Nutzer hat sich angemeldet kc_limit # Limits ermitteln kc_week # PC-Woche auswerten und Zusatz-Zeit berechnen kc_calc # Zeiten berechnen kc_residual # bereits verbrauchte PC-Zeit ermitteln kc_sess # Anzahl der Sitzungen kc_time # max. mögliche PC-Zeit kc_warn # Warnung vor dem Ende kc_consumed # Dauer der aktuellen Sitzung berechnen kc_logout shtdwn # Ausloggen des Nutzers oder Ausschalten des PC fi ### END