[gelöst mit neuem Problem] Quota vom Client abfragen

Probleme mit Samba, NFS, FTP und Co.
Antworten
Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

[gelöst mit neuem Problem] Quota vom Client abfragen

Beitrag von joe2017 » 21.03.2019 16:06:55

Hallo zusammen,

ich erstelle hierzu mal ein neues Thema, da dies in meinem letzten nicht unbedingt gefunden werden würde.
Die Frage ist, ob es eine Möglichkeit gibt, von einem Client die entsprechende Quota des NFS Servers abzufragen.

Ich habe einen NFS Server mit eingerichteten USER Quotas. Diese funktionieren auch einwandfrei.
Wenn ich auf dem Server angemeldet bin kann ich diese auch schön abfragen und sehe welcher Benutzer welche Quota erhalten hat und wie seine Speichergröße aussieht.
sudo repquota -guv /path

Jetzt würde ich dies gerne von meinem Client abfragen können. Ist dies möglich und wenn ja wie?
Ich habe z.B. folgende Abfrage ausgeführt. Hierbei handelt es sich um ein mount point mit den Quotas auf meinem NFS Server.
df -h /home/users/USER/

Code: Alles auswählen

NFS-Server/path/home/users/		25GB	374MB	23GB	2%	/home/users
Leider sehe ich hier nur den aktuell Verfügbaren Gesamtspeicher. Ich habe gehofft, dass mein Client nur den zur Verfügung gestellten Speicher (Quota 200MB) anzeigt.

Hat jemand eine Idee wie man diese von einem Client abfragen könnte? Am besten auch ohne SUDO Rechte, da dies ja pro User abgefragt werden müsste.
Zuletzt geändert von joe2017 am 16.09.2019 12:58:35, insgesamt 2-mal geändert.

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: Quota vom Client abfragen

Beitrag von joe2017 » 21.03.2019 16:22:15

Mir ist noch etwas eingefallen, was vielleicht nicht ganz so sauber wäre. Aber falls es keine andere Möglichkeit gibt, wäre das villeicht eine Idee.
Aktuell geht es lediglich um Quotas für die /home Laufwerke welche sich auf dem NFS Server befinden.

Man könnte auf dem NFS Server ein Cronjob Script laufen lassen, welches in regelmäßigen Abständen die Quotas sämtlicher Benutzer abruft und einzeln in das jewilige /home/users/USER/ Verzeichnis schreibt.
Somit könnte der Client/User die Information aus seinem angemeldeten /home Laufwerk abfragen.

Vielleicht geht es aber auch noch einfacher.

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: Quota vom Client abfragen

Beitrag von joe2017 » 22.03.2019 11:36:06

Hallo zusammen,

ich wollte euch nur mal mein Script für die Quota Benachrichtigung posten.

Als erstes müsste ein Cronjob auf dem NFS-Server laufen. Da an den Quotas ehr selten Anpassung vorgenommen werden, sollte das einmal am Tag ausreichen.
Das Script hierfür hab ich noch nicht fertig. Aber folgende Zeile müsste für jeden User ausgeführt werden.

Code: Alles auswählen

sudo quota USER > /path/home/users/USER/quota
Anschließend hab ich folgendes auf meinem Client als Cronjob laufen.

Eine kurze Erklärung was ich mache.
  • Vom NFS Server wurde die Qutoa Information auf dem Homelaufwerk des Users gespeichert (~/quota)
  • Ich prüfe ob mein verwendeter Speicher kleiner als 2000 Bytes (HardLimit Info), oder größer als mein Soft Limit (SoftLimit Info) ist.
  • Ich prüfe ob die Datei ~/quota-date vorhanden ist. Diese verwende ich um die Benachrichtigung nach einer gewissen Zeit erneut anzuzeigen.

Code: Alles auswählen

#!/bin/bash

array=($(sed -n '3p;4p' ~/quota))
varSoft=${array[2]}
varHard=${array[3]}
varUsed=($(du -cks ~/))
varUsed2=$(( ($varHard-${varUsed[0]}) ))


# Hard Limit Information
if [ $varUsed2 -le 2000 ]; then 
  if [ \! -e ~/quota-date ]; then
    notify-send --urgency=critical "Notification  -  CRITICAL" "NFS-Server - Quota Hard Limit erreicht\\n\\nSie haben soeben Ihre zulässige Speichergröße erreicht.\\nBitte löschen Sie umgehend nicht benötigete Daten in Ihrem Benutzerprofil und leeren Sie Ihren Papierkorb. Andernfalls hat dies zu Folge, dass Sie sich nicht mehr anmelden können."
    vardate1=$(date +%s)
    echo $vardate1 > ~/quota-date
  else
    vardate1=$(cat ~/quota-date)
    vardate2=$(date +%s)
    vardate3=$(( ($vardate2-$vardate1) ))
    if [ $vardate3 -ge 600 ]; then 
      notify-send --urgency=critical "Notification  -  CRITICAL" "NFS-Server - Quota Hard Limit erreicht\\n\\nSie haben soeben Ihre zulässige Speichergröße erreicht.\\nBitte löschen Sie umgehend nicht benötigete Daten in Ihrem Benutzerprofil und leeren Sie Ihren Papierkorb. Andernfalls hat dies zu Folge, dass Sie sich nicht mehr anmelden können."
      vardate1=$(date +%s)
      echo $vardate1 > ~/quota-date
    fi
  fi
fi


# Soft Limit Information
if [ $varUsed -ge $varSoft ]; then 
  if [ \! -e ~/quota-date ]; then
    notify-send --urgency=critical "Notification  -  WARNING" "NFS-Server - Quota Soft Limit überschritten\\n\\nSie erreichen in Kürze Ihre zulässige Speichergröße.\\nBitte löschen Sie nicht benötigete Daten in Ihrem Benutzerprofil. Sollten Sie das Hard Limit erreichen, kann dies zu Folge haben, dass Sie sich nicht mehr anmelden können."
    vardate1=$(date +%s)
    echo $vardate1 > ~/quota-date
  else
    vardate1=$(cat ~/quota-date)
    vardate2=$(date +%s)
    vardate3=$(( ($vardate2-$vardate1) ))
    if [ $vardate3 -ge 3600 ]; then 
      notify-send --urgency=critical "Notification  -  WARNING" "NFS-Server - Quota Soft Limit überschritten\\n\\nSie erreichen in Kürze Ihre zulässige Speichergröße.\\nBitte löschen Sie nicht benötigete Daten in Ihrem Benutzerprofil. Sollten Sie das Hard Limit erreichen, kann dies zu Folge haben, dass Sie sich nicht mehr anmelden können."
      vardate1=$(date +%s)
      echo $vardate1 > ~/quota-date
    fi
  fi
fi
Ich hoffe ich kann damit jemandem behilflich sein.
Sollte es eine ander Möglichkeit geben wäre ich natürlich dankbar.

Benutzeravatar
bluestar
Beiträge: 2346
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: [gelöst] Quota vom Client abfragen

Beitrag von bluestar » 22.03.2019 12:00:28

Hast du dich mal mit rpc.rquotad aus dem Paket Debianquota und dessen Manpage https://manpages.debian.org/stretch/quo ... .8.en.html beschäftigt?

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: [gelöst] Quota vom Client abfragen

Beitrag von joe2017 » 22.03.2019 13:05:35

Nein das Paket hatte ich leider bei meiner Suche nicht gefunden.
Danke für den Tipp. Werde ich mir mal anschauen.

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: [gelöst] Quota vom Client abfragen

Beitrag von joe2017 » 25.03.2019 16:38:27

Ich habe das jetzt etwas anders gelöst bzw angepasst.

Auf meinem NFS Server lege ich meine Quotas für die Benutzer sowieso mit einem Script an. In diesem Zuge, erstelle ich zwei versteckte Files (.QuotaHardLimit, .QuotaSoftLimit) mit den entsprechenden Quotas in dem jeweiligen Verzeichnis (/path/home/users/$USER/).

Anschließend prüfe ich auf dem Client den verwendeten Speicher und vergleiche diesen mit dem Inhalt der beiden Files. Somit kann ich mit notify-send die entsprechende Meldung für Hard oder Soft Limit ausgeben.
Dieses Script wird als Timer mittels Service aus dem Verzeichnis /etc/systemd/user/ alle x Minuten gestartet.

Bei Fragen poste ich gerne meinen Timer/Service und Scripts.

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: [gelöst] Quota vom Client abfragen

Beitrag von joe2017 » 16.09.2019 12:57:25

Vor einigen Monaten habe ich meinen Post als gelöst markiert. Jetzt hätte ich jedoch noch eine Frage hierzu.

Ich habe wie gesagt auf meinem Client ein Timer laufen welcher alle x Minuten einen Service/Script startet.
Mit diesem Script gebe ich mittels notify-send eine Info über die Quota an meine Clients aus.

Jetzt habe ich einen syslog Server installiert und werde mit den Meldungen meiner Clients über den Start und Stopp des Service geflutet!
Jetzt bin ich gerade am Überlegen ob ich das ganze mittels crobjob löse. Aber ich vermute, dass ich auch hier wieder Logs generiere.

Eine andere Möglichkeit wäre noch ein Script beim User Login. Hier eine Endlosschleife mit einem Sleep eingebaut und fertig.
Was denkt Ihr was die Beste Variante von allem ist? Mich würde einfach mal eure Meinung interessieren.

Vielen Dank.

Antworten