Hallo Steffen,

super vielen Dank - blos wo muss das skript (auf dem Server) hin?

vg matthias

Am 15.11.2016 um 18:23 schrieb Steffen Auer:
> Hallo Matthias,
> 
> Am 15.11.2016 um 15:14 schrieb Matthias Lauffer:
>> Hallo Steffen,
> 
>> vielen Dank.
> 
>> Bin hier fündig geworden:
> 
>> http://www.linuxmuster.net/wiki/anwenderwiki:linuxclient:mehrfachanmeldung
> 
>>  1. "zenity" installieren - ok 2. Das Skript "mehrfachlogin.sh" in
>> /skripte anlegen - ok 3. Nun soll ich in etc/gdm/PostLogin den Pfad
>> zum Skript angeben. -> leider gibt es bei mir auf dem Client keinen
>> Ordner gdm in /etc/?
> 
>> Liegt das vielleicht an meinem alten 12.04 er Client?
> 
> eher am "neuen". Das, was da dokumentiert ist, war die Variante beim
> 10.04 Client.
> 
> Unter 12.04 setze ich folgendes ein (alle Skripte auf dem Server)
> 
> ---
> #!/bin/bash
> # doppelanmeldungen | jesko.anschu...@linuxmuster.net 22.10.2014
> # Skript ermittelt auf einem Linuxmuster.net 6.x Server, welche Nutzer
> # doppelt angemeldet sind und startet nach einer Warnung die betroffenen
> # Rechner neu.
> #############################
> 
> # neustart=1 --> Rechner werden eine Minute nach der Warnung neu
> gestartet (reboot) oder heruntergefahren (shutdown)
> # falls dann immer noch mehrfache Anmeldungen vorliegen.
> # neustart=0 --> Es wird nur eine Meldung erzeugt und eine Mail an den
> Administrator
> neustart=0
> 
> 
> # der Pfad ist wichtig, damit das Skript auch als CRON-Job funktioniert
> PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/root/bin"
> 
> # bis zu vier Ausnahmen können hier konfiguriert werden. Diese User
> dürfen sich mehrfach anmelden
> AUSNAHME1="dsb"
> AUSNAHME2="administrator"
> AUSNAHME3="testlehrer"
> AUSNAHME4="hierkannnochwasstehen"
> AUSNAHME5="hierkannnochwasstehen"
> AUSNAHME6="hierkannnnochwasstehen"
> RECHNERAUSNAHME1="hierkannnocheinpcstehen"
> # Meldung, die der Nutzer nach dem Neustart erhält: "LOGIN," wird
> automatisch davor gesetzt. \n erzeugt einen Zeilenumbruch
> #NACHNEUSTARTMSG="du hast die letzte Warnung nicht ernst genommen und
> warst weiterhin an mehreren Rechnern gleichzeitig angemeldet. \n Alle
> Rechner, an denen du angemeldet warst, wurden neu gestartet.\n\n Denke
> daran: \n - Du darfst dein Passwort nicht weitergeben, \n - Du darfst
> nicht mit fremden Accounts arbeiten und \n - Du darfst auch nicht
> andere mit deinem Account arbeiten lassen..."
> NACHNEUSTARTMSG="du hast auf die Info zur Mehrfachanmeldung nicht
> reagiert.\nAlle Rechner, an denen du angemeldet warst, wurden aus
> Sicherheitsgründen neu gestartet.\n\nDenke daran: \n - Du darfst dein
> Passwort nicht weitergeben, \n - Du darfst nicht mit fremden Accounts
> arbeiten \n - Du darfst auch nicht andere mit deinem Account arbeiten
> lassen \n - Du darfst dich immer nur an einem Rechner anmelden."
> # zu debugzwecken lässt sich hier der Befehl für den Anmeldestatus ändern.
> SMBSTATUS="smbstatus -b"
> #SMBSTATUS="cat /root/smbstatus"
> 
> # debug=1 bewirkt, dass die Herunterfahr-Befehle nicht ausgeführt,
> sondern auf der Console ausgegeben werden.
> if [[ "$1" == "-v" ]]
> then
> echo "Debug-Modus ein"
> debug=1
> else debug=0
> fi
> 
> 
> 
> # wohin darf das Skript schreiben?
> TMP="/tmp/doppelanmeldungen"
> 
> # falls es nicht existiert wird das temp-Verzeichnis angelegt
> mkdir -p $TMP
> 
> if [[ "$(ls $TMP)" != "" ]]
> then  #wenn TempDir nicht leer ist, bereinigen...
>       find ${TMP} -cmin 5 -delete  # nach 5 Minuten wird der
> Verwarnungsstatus zurückgesetzt...
> fi
> 
> # herausfinden, wer doppelt angemeldet ist.
> DOPPELT=$($SMBSTATUS | tail -n+5 | sed 's/  */;/g' | cut -d";" -f2 |
> sort | grep -v "$AUSNAHME1" | grep -v "$AUSNAHME2" | grep -v
> "$AUSNAHME3" | grep -v "$AUSNAHME4" | grep -v "$AUSNAHME5" |grep -v
> "$AUSNAHME6" | uniq -d)
> for login in $DOPPELT
> do
>   # für alle doppelt angemeldeten werden jetzt die IP-Adressen der
> unterschiedlichen Rechner herausgefunden und gezählt.
>   # wichtig sind die umschliessenden leerzeichen um den Login... sonst
> werden zu viele runtergefahren...
>   RECHNER=$($SMBSTATUS | grep " $login " | grep -v $RECHNERAUSNAHME1|
> sed 's/  */;/g' | cut -d";" -f4| sort | sed -e "s/(//g" | sed -e
> "s/)//g" | sed -e "s/ /\n/g" | uniq -u | sed -e "s/\n/ /g")
>   ANZAHL=$(echo $RECHNER | wc -w)
>   [[ "$ANZAHL" == 0 ]] && continue # Falls die Anmeldungen an ein und
> demselben Rechner sind, dann ist das hier null wg. uniq -u... dann mit
> dem nächsten weitermachen...
>   # bei allen anderen werden noch Name und Klasse ermittelt.
>   [[ "$ANZAHL" == 1 ]] && continue # Falls es mehrere Anmeldungen
> sind, aber an AUSNAHME-Rechnern, dann ist die Anzahl an nicht
> erlaubten Rechnern 1 und damit noch ok...
> 
>   KLASSE=$(/usr/sbin/sophomorix-user -u $login| grep PrimaryGroup |
> cut -d ":" -f2 | awk -F "  " ' { print $1 }' | sed 's/^ //g')
>   NAME=$(/usr/sbin/sophomorix-user -u $login| grep Gecos | cut -d ":"
> -f2 | awk -F "  " ' { print $1 }' | sed 's/^ //g')
>   if [[ "$neustart" == "1" ]]
>   then
>    if [ -e ${TMP}/$login ] # wenn beim letzten Lauf schon verwarnt
> wurde, Rechner neu starten oder herunterfahren...
>    then
>       [[ "$debug" == "0" ]] &&  /root/bin/message-user $login "$login,
> $NACHNEUSTARTMSG"
>       sleep 1 # kurz warten
>       for IP in $RECHNER
>           do
>                 [[ "$debug" == "0" ]] && ssh root@$IP reboot # hier
> reboot oder shutdown eintragen
>                 [[ "$debug" == "1" ]] && echo "ssh root@$IP reboot" #
> hier reboot oder shutdown eintragen
>           done
> 
>    else # sonst warnen...
>  /root/bin/message-user.sh $login "$NAME, du bist an $ANZAHL Rechnern
> gleichzeitig angemeldet. \nDas widerspricht unseren
> Datenschutzbestimmungen.\n\nMelde dich bitte jetzt überall ab, wo du
> nicht selbst dran sitzt.\n\nRechner an denen du angemeldet bist:
> \n$(echo $RECHNER | sed 's/ /, /g')”
>     echo -e "$NAME aus der Klasse $KLASSE ist an $ANZAHL Rechnern
> angemeldet:\n\n$(echo $RECHNER| sed 's/ /, /g')" | mail -s
> "Mehrfachanmeldung von $NAME, $KLASSE" administra...@deinedomain.de
>     sleep 1
>     touch ${TMP}/$login
>     sleep 1
>     echo "Warnung ignoriert $date" >  ${TMP}/$login
>    fi
>   fi
> done
> 
> exit 0
> ---
> 
> zusätzlich wird das Skript message-user.sh benötigt.
> 
> ---
> #!/bin/bash
> userhome=$(/usr/sbin/smbldap-usershow "$1" | /bin/grep homeDirectory |
> /usr/bin/awk -F": " '{ print $2 }')
> message="$2"
> /bin/echo "$message" > $userhome/.majestix-motd
> /bin/echo $(date) > /var/log/message-user.log
> /bin/echo -e "$message\n $userhome" >> /var/log/message-user.log
> ---
> 
> Das erste Skript minütlich oder so in der Crontab am Server aufrufen.
> 
> Viele Grüße
> Steffen
> 
> _______________________________________________
> linuxmuster-user mailing list
> linuxmuster-user@lists.linuxmuster.net
> https://mail.lehrerpost.de/mailman/listinfo/linuxmuster-user
> 

_______________________________________________
linuxmuster-user mailing list
linuxmuster-user@lists.linuxmuster.net
https://mail.lehrerpost.de/mailman/listinfo/linuxmuster-user

Antwort per Email an