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