• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Netrwerk Traffic pro User limitieren, ähnlich Quota

s_quelle

Newbie
Hi Leute,

ich habe in meinem Heimnetz drei Rechner, an denen insgesammt 4 Leute surfen (jeder User sitzt immer an der selben Kiste). Da wir derzeit einen DSL Volumentarif nutzen (1 GB frei, alles weitere recht teuer => werde wohl demnächst wechseln), würde ich gerne das frei Volumen auf die User verteilen können, nur wie? Übrigens, die Rechner werden nach benutzung immer wieder aus geschaltet, der im aktuellen Zeitraum bereits verbrauchte Traffic muesste also irgendwie auf Platte gespeichert werden.
Ich hätte folgenden Anforderungen an die Lösung:
  • das Volumen kann beliebig auf die User verteilt werden
  • die User erhalten einen Hinweis, wieviel Traffic sie schon genutzt haben, und was Ihnen noch zur Verfügung steht, entweder mittels PopUp nach dem LogIn, und/oder per Mail
  • nachdem die Grenze erreicht ist, wird der Internetzugang des betreffenden Users gesperrt (schoen waere es, wenn der User die aktuelle Session noch beenden könnte, und die Sperrung erst bei'm nächsten Login erfolgt)
  • der Admin, also ich, erhält eine Mail, wenn ein User eine bestimmte Menge des ihm zugeteilten Volumens verbraucht hat, um so ggf. hier "ein paar MB nachlegen zu können"
Ich habe mich hier drann auch schon versucht, habe es aber noch nicht in den Griff bekommen das Volumen zu zählen, das ein einzelner User verbraucht hat. Wenn das geschafft ist, denke ich, den Rest auch selber zu schaffen.


Danke

Roland
 
OP
S

s_quelle

Newbie
Hi,

da leider bisher noch nicht der Knaller an Tip gekommen ist, stelle ich mal meinen Ansatz zur Diskussion.
Code:
# Aktuell genutztes Volumen
log_dev=eth0
akt_gesendet=$(grep $log_dev /proc/net/dev |awk '{print $9}')
akt_empfangen=$(grep $log_dev /proc/net/dev |awk '{print $1}'|cut -f2 -d:)
Ob's jetzt $9 und $1 sein muessen will ich hier nicht diskutieren, da ich auch gerade sehe das zwischen dem Interfacenamen und dem Empfangenen Volumen mehrere Leerzeichen stehen. Als ich diese Zeilen geschrieben habe, war da kein Leerzeichen, da ich da schon lange online war, und die Felder dementsprechend "zusammen gefallen" waren.
Code:
> cat /proc/net/dev
Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
    lo: 2939014   37386    0    0    0     0          0         0  2939014   37386    0    0    0     0       0          0
  eth0:       0       0    0    0    0     0          0         0    14364      42    0    0    0     0       0          0

Da ich davon ausgehe das zu einem Zeitpunkt immer nur ein User an/mit dem Rechner arbeitet, will ich zu Beginn der Session die Werte ermitteln, und am Ende. Die Differenz hieraus, will ich zu seinem bisher verbrauchten Volumen addieren. Ist das vom Ansatz her überhaupt richtig?
Ein Problem mit dem ich mich bisher nur am Rande beschäftigt habe ist, wie "bemerke" ich das sich User X an- bzw. abmeldet? Alle User ausser mir nutzen grundsätzlich KDM zum anmelden, von Konsole haben die noch nie was gehört.

Für jeden Tip dankbar

Roland
 
Oben