{{tag> login 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 Verwendet : $percent % \n\n\n $text") 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 Verwendet : $percent % \n\n\n$text") 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