Czesc.
Napisalem wlasny odpowiednik skryptu /sample/traffic_ipt.sh Jest moim zdaniem bardziej uniwersalny - nie trzeba wpisywac na sztywno adresow IP (ich koncowek) tylko sa one pobierane z lancucha RECV.
Kto chce, niech uzywa. Moze tez zostac umieszczony w contrib'ie.
#!/bin/bash
# robol.sh Alternatywny skrypt dla lms-traffic # orzi <orzi%jedwab,net,pl>
# Wymagania: grep, awk
# Ponizszy opis wziety z sample/traffic_ipt.sh:
# Skrypt zliczajacy ruch dla kazdego usera na podstawie # licznikow iptables. Nalezy go uruchamiac z crona # na przyklad co 10 minut. # Na firewallu nalezy utworzyc lancuchy zliczajace ruch: # iptables -N RECV # iptables -N SEND # i nastepnie dla kazdego komputera regulki: # iptables -A RECV -d <IP komputera w sieci LAN> -j RETURN # iptables -A SEND -s <IP komputera w sieci LAN> -j RETURN # i na koncu: # iptables -A FORWARD -j RECV # iptables -A FORWARD -j SEND
## Konfiguracja PLIK_WYNIK='/etc/firewall/traffic.log' IPT=/sbin/iptables ##
# Ponizej nic nie zmieniac
PLIK_SEND='/tmp/send.stat.'$$ PLIK_RECV='/tmp/recv.stat.'$$
# Odczytanie licznikow z firewalla i zapis do plikow $IPT -L RECV -v -x -n > $PLIK_RECV $IPT -L SEND -v -x -n > $PLIK_SEND
# Usuniecie starego traffic.log if [ -e $PLIK_WYNIK ] then rm $PLIK_WYNIK fi
# main LISTA_IPS=`egrep -v Chain|pkts $PLIK_SEND | awk ' { print $8 } ' `
for i in $LISTA_IPS do CYFERKAS=`grep "$i " $PLIK_SEND | awk ' { print $2 } ' ` CYFERKAR=`grep "$i " $PLIK_RECV | awk ' { print $2 } ' `
# <adres IP> <n_spacji> <upload> <n_spacji> <download> echo "$i $CYFERKAS $CYFERKAR" >> $PLIK_WYNIK
done
# Zerowanie licznikow firewall'a $IPT -Z
# usunicie plikow z licznikami rm $PLIK_SEND rm $PLIK_RECV