Quota-Nutzung beim Anmelden anzeigen

Hallo,

leider verstehe ich die Wiki-Anleitung Quota-Nutzung beim Anmelden anzeigen wohl nicht ganz richtig. Ich bekomme auf meinen Linuxclients kein zenity-Pop-Up nach dem Anmelden. LMN6.1 virtualisiert unter XEN.

Vielleicht stimmen die Pfade nicht???

Gruß
Stefan

Hier die entsprechenden Eintragungen:

  1. Am Server /etc/samba/smb.conf editiert. Übrigens unter [homes], nicht wie im Wiki steht [home], da dies nicht existiert - hoffentlich stimmts!?
[homes]
   comment = Heimatverzeichnis
   browseable = no
...
    # linuxmuster wiki - Quota-Nutzung beim Anmelden anzeigen - Sen
    root preexec = /usr/local/bin/quota_usr.sh %G %u
  1. /usr/local/bin/quota_usr.sh erstellt, angepasst und ausführbar gemacht mit
    chmod +x /usr/local/bin/quota_usr.sh

Die Pfade im Skript habe ich angepasst mit Hilfe der Ausgabe:

    18:58/0 server ~ # quota -wvul kargfabi
    Disk quotas for user kargfabi (uid 13495): 
         Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
    /dev/mapper/vgvar-lvvar       0  820000 1024000               0   81920  102400        
    /dev/mapper/vghome-lvhome   16000  1639000 2048000             113  163840  204800 

Hier das fertige Skript (letzte Zeile zur Ausgabe mit zenity auch aktiviert):

    #!/bin/sh

    HOMEPATH=`grep -w -e ^$2 /etc/passwd | awk -F: '{print $6}' `

    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

    case $1 in
            schueler)
                    echo "Speicherverbrauch im Home-Laufwerk von $2" > $QUOTADAT
                    quota -wvul $2| $AWK '/dev/mapper/vghome-lvhome/{print "Speicherverbrauch insgesamt: " int($2/1024) " MByte\nerlaubter Speicherverbrauch: " i$
                    ;;
            lehrer)
                    echo "Speicherverbrauch im Home-Laufwerk von $2" > $QUOTADAT
                    quota -wvul $2| $AWK '/dev/mapper/vghome-lvhome/{print "Speicherverbrauch insgesamt: " int($2/1024) " MByte\nerlaubter Speicherverbrauch: " i$
                    ;;
            root)
                    echo "Speicherverbrauch im Home-Laufwerk von $2" > $QUOTADAT
                    quota -wvul $1| $AWK '/dev/mapper/vghome-lvhome/{print "Speicherverbrauch insgesamt: " int($2/1024) " MByte\nerlaubter Speicherverbrauch: " i$
                    ;;
            admin)
                    echo "Speicherverbrauch im Home-Laufwerk von $2" > $QUOTADAT
                    quota -wvul $1| $AWK '/dev/mapper/vghome-lvhome/{print "Speicherverbrauch insgesamt: " int($2/1024) " MByte\nerlaubter Speicherverbrauch: " i$
                    ;;
            *)
                    ;;
    esac


    $CHMOD $MODE $QUOTADAT

    # wenn Ubuntu-Clients, dann z.B.
    ## su USERNAME -c 'export DISPLAY=:0.0; zenity --timeout 20 --title "Speichernutzung" --info --text "`cat $QUOTADAT`"'
    zenity --timeout 20 --title "Speichernutzung" --info --text "`cat $QUOTADAT`"

Hallo,

hat jemand eine funktionierende Lösung für Linux-Clients um den Usern eine Speicher-Quota-Warnung anzuzeigen?

Bräuchte das unbedingt. Bin umgestiegen von Win-Musterlösung mit Win7-Clients. Von daher sind die User es gewöhnt die Quota ihrer Laufwerke am Arbeitsplatz farbig angezeigt zu bekommen. Da es das beim nun eingesetzten Linux Mint Xfce in der LMN6.1 so nicht gibt, habe ich zunehmend User, die gar nicht erkennen, dass ihre Probleme von vollen Speicher-Quota kommen. Zum Beispiel crasht das Firefoxprofil unwiederbringlich, da wir das Profil im Home_auf_Server speichern - das ist schon sehr unangenehm.

Gruß
Stefan

1 „Gefällt mir“

Hallo Stefan,

Ich verwende Xubuntu.
Auf dem Client :

Datei /home/linuxadmin/.config/autostart/quota.desktop :

[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

Datei /usr/bin/quota_openml ( “fichier” heißt Datei auf franz. ) :

#! /bin/bash

fichier="$HOME/Home_auf_Server/.quotadat"

used=$(grep insgesamt $fichier | cut -d" " -f3)
quota=$(grep Erlaubter $fichier | 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önne Probleme beim Speichern \n\nvon Dateien auftretten 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 $fichier` \n\n\n <span color=\"$color\"><b><u>Verwendet : $percent %</u></b></span> \n\n\n <span color=\"$color\"><b>$text</b></span>")

Gruß

Arnaud

Hallo Michael,

Das Skript funktioniert nicht für den User linuxadmin, nur für die Lehrer und Schülern.
Die Datei quotadat ist vom Server erzeugt, durch Samba. Das erklärt Stefan am Punkt 1. ( der erste :slight_smile: ).
Und ja, wmctrl soll installiert sein, damit taucht das Fenster zenity richtig auf.

ich habe mir das ganze gerade auch mal angesehen. Zuerst hatte ich nur die Scripte von Arnaud ausprobiert und mich gewundert, dass es nicht lief. … na ja … ist ja noch früh :slight_smile:

Mir kommt es seltsam vor, dass man bei “quota -wvu” nur einen Benutzernamen und keine Gruppe einsetzen soll??
Welche Einträge soll man bei /llehrer usw eintragen? Das bleibt unklar.

Zudem liefert der Befehl hinter HOMEPATH=“grep…” bei mir nichts.
Um welchen Eintrag in der passwd-Datei soll es hier gehen?
Eine genauere Erläuterung wäre nicht schlecht (vor allem, was auf den Server und was auf den Client gehört und wo welche Pakete installiert sein müssen)

Ja, hatte ich zwischenzeitlich bemerkt. Ich habe es auch als User ausprobiert … allerdings läuft das Script quota_usr.sh nicht so wie es soll … s.o.

Ok, ich habe mir das ganze nochmal mit etwas mehr Ruhe angesehen und konnte diverse Stoplersteine aus dem Weg räumen.

Zum Einen ist in dem Script 1 von Stefan in #1 (für den Server) ein Fehler: Es muss dort “Erlaubter” und nicht “erlaubter” heißen, da das 2. Script von Arnaud in #3 sonst bei der Berechnung keinen Wert erhält.

Die Einträge unter “/llehrer” usw konnte ich nun auch klären. Dort musste hier einfach nur “vda1” eingetragen – ohne /dev/ oder weitere Pfade davor (unter Proxmox virtualisierte HDDs). Ich habe das Script 1 dann auf dem Server unter [homes] in die smb.conf eingebunden – aber dennoch wird die Datei .quotadat beim Anmelden nicht angelegt. Wenn man das manuell macht, funktioniert der Rest aber jetzt, so dass es nur noch eine Kleinigkeit sein kann.

Ich nehme an, dass man die Zeile

HOMEPATH=`grep -w -e ^$2 /etc/passwd | awk -F: '{print $6}' `

erheblich vereinfachen kann; bin aber noch nicht sicher wie. Auf den Clients existiert ja die Variable /tmp/heimatverzeichnis; wie bekommt man das serverseitig?

Nach der Änderung von smb.conf, hast du samba neu gestartet ?

Ich hatte auch einige Probleme mit dem Serverskript, ich habe es so geändert :

/etc/samba/smb.conf :

root preexec = /usr/local/bin/quota_usr.sh %G %u %U %I %H

/usr/local/bin/quota_usr.sh :

 #!/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

Es gibt mehr Variabeln, da ich den userlog behalten wollte.

Gruß

Arnaud

Übrigens : was mich stört ist dass bei jeder Update von Samba muss man die Zeile preexec neu schreiben.

Hallo Arnaud,

Übrigens : was mich stört ist dass bei jeder Update von Samba muss man
die Zeile preexec neu schreiben.

kannst du das nicht in die /etc/samba/smb.conf.shares schreiben?
Oder in die .global?

LG

HOlger

Wunderbar! Mit deiner verkürzten Fassung läuft es! Sehr gut… ich habe das Icon gerade (als linuxadmin) auf den Desktop geschoben. Es soll hier ohne Autostart laufen.

Ich hatte mich eh schon darüber gewundert, was die case-Abfrage soll, wenn man’s sowieso nur als Lehrer/Schüler nutzen kann. Bei mir musste ich allerdings weiterhin aus dem Eintrag hinter awk ein /vda1/ anstelle von /home/ machen - danach lief es.

Kannst du das im Wiki ändern – bevor es auf docs.linuxmuster.net übernommen wird?

Übrigens: Das Häkchen [x] gelöst kann ich nicht setzen (taucht nicht auf). Wahrscheinlich keine ausreichenden Rechte? Das muss jemand anders übernehmen.

Hallo Holger,

kannst du das nicht in die /etc/samba/smb.conf.shares schreiben?
Oder in die .global?

Ich werde es probieren, danke !

Gruß

Arnaud

Kannst du das im Wiki ändern – bevor es auf docs.linuxmuster.net übernommen wird?

( Schnell ) gemacht : http://www.linuxmuster.net/wiki/anwenderwiki:windowsclient:anmelde-quota

Hallo Arnaud,

bei mir funktioniert es jetzt auch!
Danke für die Skripte und die Überarbeitungen.

Kann ich in Deinem Wiki-Artikel noch ein paar Korrekturen vornehmen, die mir aufgefallen sind?

Ich habe noch eine veränderte PopUp-Variante der /usr/bin/quota_openml geschrieben, die erst ab 80% Nutzung angezeigt wird. Die würde ich dann auch in den Artikel schreiben.

Gruß
Stefan

Kann ich in Deinem Wiki-Artikel noch ein paar Korrekturen vornehmen, die mir aufgefallen sind?

Natürlich :slight_smile:
Grammatik- und Sprachekorrekturen ist auch willkommen !

Hallo Arnaud,

… done:
http://www.linuxmuster.net/wiki/anwenderwiki:windowsclient:anmelde-quota

Bleibt nur noch das:

Würdest Du uns informieren, falls die Anpassung funktioniert?

Gruß
Stefan

Ich habe folgendes in /etc/samba/smb.conf.shares eingetragen :

[homes]
root preexec = /usr/local/bin/quota_usr.sh %G %u %U %I %H

Und nach dem Restart von Samba klappt es.