WDSL Drossel
Zum Hintergrund: Ein lokaler Internetprovider bietet Vertragsbedingt 75GB monatliches Inklusivvolumen. Dieses harte Limit gilt es nicht zu überschreitem. Es wird in kurzen Abständen der Zählerstand des Providers als Berechnungsgrundlage herangezogen.
Mit u.g. Parametern passiert folgendes: Verbrauchtes Volumen bis 20 GB, der FF Router justiert sich auf 3,5Mbit Down 0,6 Mbit up =4,1 Mbit kummuliert.
Die Droßel setzt bei einem verbrauchten Volumen von 20,72 langsam an.
Sind 40/75 GB verbraucht werden nur noch 2,315 MBit 3/4 davon Downlink freigegeben.
Sind 64/75 GB verbraucht werden nur noch 0,093 3/4 davon Downlink freigegeben.
Das untere Limit liegt bei 56/16 Kbit/s was unter härtesten bedingen zu maximal 0,778 GB traffic am Tag führen kann.
"Das sollte so passen"....was soll denn da schon schief gehen?
I puked all over my shell…
#!/bin/sh kluid='root' klpwd='admin' monthly_gb=65 max_ingress=3500 max_egress=600 interface='mesh-vpn' cookiejar=$(mktemp -t swmr.XXXXXX) curl -c $cookiejar -m 10 'http://kundenlogin.wdsl-mr.de/?go=login' -F "kluid=$kluid" -F "klpwd=$klpwd" -s -o /dev/null current_gb=$(curl -b $cookiejar -m 10 'http://kundenlogin.wdsl-mr.de/?go=volumen' -s | sed -n 's/.*= <strong>\(.*\),\(.*\) GB<\/strong>.*/\1.\2/p;T;q') rm $cookiejar if [ "$current_gb" == "" ]; then current_gb=$monthly_gb fi limit_bandwidth=$(awk -v current_gb="$current_gb" -v monthly_gb="$monthly_gb" 'BEGIN {print int(((monthly_gb - current_gb) * 1024 * 1024 * 8) / 86400)}') # kbit/s over 24h limit_ingress=$(($limit_bandwidth * 3 / 4)) limit_egress=$(($limit_bandwidth * 1 / 4)) if [ $limit_ingress -le 0 ]; then limit_ingress=56 elif [ $limit_ingress -ge $max_ingress ]; then limit_ingress=$max_ingress fi if [ $limit_egress -le 0 ]; then limit_egress=32 elif [ $limit_egress -ge $max_egress ]; then limit_egress=$max_egress fi simple-tc "$interface" "$limit_ingress" "$limit_egress" logger -p 5 -t swmr_shape "Current traffic: $current_gb GB -> Limit ingress: $limit_ingress kbit/s, egress: $limit_egress kbit/s on $interface"