
rikardo
(usa Debian)
Enviado em 02/03/2010 - 21:57h
olá a todos, estou tentando montar um controle de banda de forma dinâmica aqui para poder usar em conjunto com o nocat.
Pensei em algo assim:
Como estou com um servidor DHCP ativo, quando os clientes fazem login, o nocat passa o IP do cliente e o nome de usuario para um script, assim o script olha a velocidade do cliente em um arquivo e faz o controle em cima do IP indicado.
De início fiz este script assim:
##########SCRIPT##########
#!/bin/bash
# A placa de rede que tera o controle de banda
p_rede="eth0"
USUARIO=$1
IP=$2
echo $IP > /tmp/IP
ID=`cat /tmp/IP | grep $IP | cut -d . -f4`
BANDA=`cat velocidade | grep $USUARIO | cut -d : -f2`
echo "usuario = $USUARIO"
echo "ip = $IP"
echo "id = $ID"
echo "banda = $BANDA"
#APAGA CONTROLE EXISTENTE NO IP INDICADO
tc filter del dev $p_rede pref 1 proto ip parent 1:0 u32 match ip src $IP flowid 1:$ID
tc class del dev $p_rede classid 1:$ID
#CRIA O NOVO CONTROLE
if [[ $BANDA == 0 ]]; then
exit
else
tc class add dev $p_rede parent 1:0 classid 1:$ID htb rate "$BANDA"kbit
tc filter add dev $p_rede protocol ip parent 1:0 prio 1 u32 match ip dst $IP flowid 1:$ID
tc filter add dev $p_rede protocol ip parent 1:0 prio 1 u32 match ip src $IP flowid 1:$ID
fi
##########SCRIPT##########
O problema é que o script está apagando todos os "filter" existentes.
Alguem sabe uma solução para eu apagar somente o filter certo ou para eu editar a banda existente em uma class?
Grato.