Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:windowsclient:anmelde-quota]] 

Quota-Nutzung beim Anmelden anzeigen

Damit es keine Überraschungen gibt, wenn das Home-Laufwerk plötzlich voll ist, gibt es hier eine Software, die den Benutzer beim Login per Popup über seinen „Speicherverbrauch“ informiert. Ursprünglich nur für Windows-Clients entwickelt, gibt es nun auch ein Version für Linux-Clients.

Es wird immer die Serveranpassung benötigt, welche dafür sorgt, dass die Quotainformation der Nutzer in deren Verzeichnissen unter .quotadat gespeichert wird. Zusätzlich benötigt man das Clientskript auf den Clients je nach Betriebssystem für Windows oder Linux.

Übrigens enthalten die vom Administrator gesetzten Quota immer einen 'grace'-Anteil, den der Benutzer nur kurzfristig nutzen darf. Gibt man z.B. 5120MB vor, so entsprechen 4096MB 100% Nutzung ('limit'). Der Rest von 1024MB ist der 'grace'-Teil.

Serveranpassung

Ergänze die /etc/samba/smb.conf. Die Datei smb.conf sollte man unbedingt vor der Veränderung sichern und am besten auch nach der Veränderung, da diese durch Updates überschrieben werden könnte.

[homes]
...
...
...
# Quota-Nutzung beim Anmelden anzeigen - LMN-Wiki
root preexec = /usr/local/bin/quota_usr.sh %G %u %U %I %H

Erstelle die Datei /usr/local/bin/quota_usr.sh mit folgendem Inhalt:

#!/bin/sh

HOMEPATH=$(/usr/sbin/smbldap-usershow $2 | /usr/bin/awk '/homeDirectory/{print $2}')

/usr/sbin/samba-userlog --log=in --username=$3 --hostname=$4 --homedir=$5

QUOTADAT=$HOMEPATH/.quotadat
DU=/usr/bin/du
AWK=/usr/bin/awk
CHMOD=/bin/chmod

MODE=0666

if [ $# -lt 2 ]; then
        echo "Parameter 'Gruppe' und/oder 'Benutzername' fehlt!"
        exit 0;
fi

echo "Speicherverbrauch im Home-Laufwerk von $2" > $QUOTADAT
quota -lwvu $2| $AWK '/home/{print "Speicherverbrauch insgesamt: " int($2/1024) " MByte\nErlaubter Speicherverbrauch: " int($3/1024)" MByte"}' >> $QUOTADAT

$CHMOD $MODE $QUOTADAT

P.S: Um die Quota eines Benutzers am Server einzusehen, kann man auf dem Server diesen Befehl absetzen:

quota -lwvu benutzername

Linux-Clients ( mit zenity-Paket z.B. XFCE-Desktop )

Das Paket wmctrl muss installiert werden:

sudo apt-get install wmctrl

Das Linux-Clientskript speichert man unter /usr/bin/quota_openml. Es gibt mehrere Varianten:

1. Variante von Arnaud mit Anzeige bei jedem Quota-Stand:

#! /bin/bash

datei="$HOME/Home_auf_Server/.quotadat"

used=$(grep insgesamt $datei | cut -d" " -f3)
quota=$(grep Erlaubter $datei | cut -d" " -f3)

percent=$(/usr/bin/python3 -c "print(round($used*100/$quota))")

if [[ "$percent" -le 51 ]] ; then
        color="green"
        text=""
elif [[ "$percent" -le 76 ]] ; then
        color="orange"
        text=""
else
        color="red"
        text="Das Benutzerkonto ist voll, es können Probleme beim Speichern \n\nvon Dateien auftreten und verschiedene Programme funktionieren nur eingeschränkt."
fi

(sleep 2 && /usr/bin/wmctrl -F -a "Speichernutzung" -b add,above) & (/usr/bin/zenity --timeout 20 --title "Speichernutzung" --info --text "`cat $datei` \n\n\n <span color=\"$color\"><b><u>Verwendet : $percent %</u></b></span> \n\n\n <span color=\"$color\"><b>$text</b></span>")

2. Variante von Stefan mit Anzeige nur bei Quota-Stand ab 80%:

#! /bin/bash

datei="$HOME/Home_auf_Server/.quotadat"

used=$(grep insgesamt $datei | cut -d" " -f3)
quota=$(grep Erlaubter $datei | cut -d" " -f3)

percent=$(/usr/bin/python3 -c "print(round($used*100/$quota))")

if [[ "$percent" -le 80 ]] ; then
        exit
elif [[ "$percent" -le 100 ]] ; then
        color=#FF5200
        text="\nIhr Speicherplatz ist fast voll ! \n\nLöschen Sie Ihre nicht benötigten Dateien im \n\nHome-Verzeichnis, den Tausch- und Projektordnern, \n\nsonst wird es zu Problemen beim Speichern und \n\nbeim Ausführen von Programmen (z.B. Internetbrowser) kommen. \n\nIhre Speichernutzung sehen Sie in der SCHULKONSOLE."
else
        color=#FF0015
        text="\nIhr Speicherplatz ist voll !!! \n\nLöschen Sie UMGEHEND Ihre nicht benötigten Dateien im \n\nHome-Verzeichnis, den Tausch- und Projektordnern, \n\nsonst wird es zu Problemen beim Speichern und \n\nbeim Ausführen von Programmen (z.B. Internetbrowser) kommen. \n\nIhre Speichernutzung sehen Sie in der SCHULKONSOLE."
fi

(sleep 2 && /usr/bin/wmctrl -F -a "Speichernutzung" -b add,above) & (/usr/bin/zenity --title "Speichernutzung" --warning --text "`cat $datei` \n\n\n <span color=\"$color\"><b><u>Verwendet : $percent %</u></b></span> \n\n\n<span color=\"$color\"><b>$text</b></span>")

exit

Damit das Skript automatisch nach der Anmeldung aufgerufen wird, erzeugt man die Datei /home/linuxadmin/.config/autostart/quota.desktop mit folgendem Inhalt:

[Desktop Entry]
Encoding=UTF-8
Version=0.9.4
Type=Application
Name=TestQuota
Comment=Quota
Exec=/usr/bin/quota_openml
StartupNotify=false
Terminal=false
Hidden=false

Windows-Clients

Für Windows-Clients muss in die login.bat/anmelde.bat eine neue Schlusszeile eingefügt werden:

wscript \\server\netlogon\quota.vbs

Inhalt von quota.vbs (Anzupassen ist das Homelaufwerk H:)

'Zeitdauer wie lange das Popupfenster angezeigt werden soll
Time_Out = 20
'Name der Datei die angezeigt werden soll
Dateiname = "H:\.quotadat"
'Titel des Popupfensters
Popup_Titel = "Speicherplatz"

Dim objFSO
Dim objWScript
Dim objFile

Set objWScript = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists(Dateiname) = True then
    Set objFile = objFSO.OpenTextFile(Dateiname)

    objWScript.Popup objFile.ReadAll, Time_Out, Popup_Titel,64

    objFile.Close
 End if

Set objFile = Nothing
Set objWScript = Nothing
Set objFSO = Nothing
 [[anwenderwiki:windowsclient:anmelde-quota]] anwenderwiki/windowsclient/anmelde-quota.txt · Zuletzt geändert: 2017/05/15 06:57 (Externe Bearbeitung)