Pular para o conteúdo

Monitoração do CBQ

Pessoal

Escrevi este script para monitoração do CBQ de uma maneira mais elegante do que aquele cbq stats.

O script processa a saída do comando "cbq stats" e o traduz em uma linha por regra, mostrando a taxa em kbps efetiva, em relação à ultima execução do mesmo.

Como é ainda uma versão alfa, podem ocorrer erros na primeira execução, quando o arquivo temporário ainda não existir.

Recomendo que o mesmo somente seja executado pelo root, pois o arquivo temporário está com nome fixo.
Jose Geraldo jotagera
Hits: 10.105 Categoria: Shell Script Subcategoria: Avançado
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Pessoal

Escrevi este script para monitoração do CBQ de uma maneira mais elegante do que aquele cbq stats.

O script processa a saída do comando "cbq stats" e o traduz em uma linha por regra, mostrando a taxa em kbps efetiva, em relação à ultima execução do mesmo.

Como é ainda uma versão alfa, podem ocorrer erros na primeira execução, quando o arquivo temporário ainda não existir.

Recomendo que o mesmo somente seja executado pelo root, pois o arquivo temporário está com nome fixo.
Download cbqstat.txt Enviar nova versão

Esconder código-fonte

# Script para verificar os status do CBQ de maneira mais
# estatistica que o cbq stats do cbq.init
#
# JGeraldo 08/09/2004 - v0.1 - Alpha

end_date=`date "+%s"`
if [ ! -f /tmp/cbqstat.ant ]
then
   echo "ULT_STR:`date`" > /tmp/cbqstat.ant
   echo "ULT_NUM:$end_date" >> /tmp/cbqstat.ant
   echo "ULT_STR:`date`" > /tmp/cbqstat.atu
   echo "ULT_NUM:$end_date" >> /tmp/cbqstat.atu
   stat=n
else
   echo "ULT_STR:`date`" > /tmp/cbqstat.atu
   echo "ULT_NUM:$end_date" >> /tmp/cbqstat.atu
   stat=s
fi
ult_str=`cat /tmp/cbqstat.ant|grep ULT_STR|cut -c9-80`
ult_num=`cat /tmp/cbqstat.ant|grep ULT_NUM|cut -d: -f2`
seconds=`expr $end_date - $ult_num`

cbq stats | while read p0 p1 p2 p3 p4 p5 p6 p7 p8 p9
#cat x | while read p0 p1 p2 p3 p4 p5 p6 p7 p8 p9
do
   #echo "p0:$p0 p1:$p1 p2:$p2 p3:$p3 p4:$p4 p5:$p5 p6:$p6 p7:$p7 p8:$p8"
   if [ "$p0" = "###" ]
   then
      iface=$p1
   fi
   if [ "$p0" = "qdisc" ]
   then
      rule=$p2
      rate=$p4
      burst=$p6
      laten=$p8
   fi
   if [ "$p0" = "Sent" ]
   then
      bytes=$p1
      pkts=$p3
      echo "RULE:$iface:$rule:$rate:$burst:$laten:$bytes:$pkts">> /tmp/cbqstat.atu
      bytes_ant=`cat /tmp/cbqstat.ant|grep "RULE:$iface:$rule"|cut -d: -f9`
      tbytes=`expr $bytes - $bytes_ant`
      if [ $seconds -gt 0 ]
      then
         tbits=`expr $tbytes \* 8`
         kbps=`expr $tbits / $seconds / 1024`
      fi
      siface=`echo $iface | cut -d: -f1`
      srule=`echo $rule | cut -d: -f1`
      printf "%s, rule %3s: %4d kbps in %d seconds\n" $siface $srule $kbps $seconds
   fi
done
if [ $1"Q" != "nQ" ]
then
   mv -f /tmp/cbqstat.atu /tmp/cbqstat.ant
fi

Ispeed - Medidor de velocidade de download

Diagnóstico de Rede

Instalar o Navegador Tor em qualquer distribuição Linux

NFS server/client com iptables

Script para Wireless no Fedora 7 (modelo ipw3945)

#1 Comentário enviado por Corujitu em 15/05/2007 - 18:26h
Olá José.. Tudo bem? Bom, é o seguinte: andando pelo VOL, vi sua dica sobre a saída do stats do CBQ e achei bem interessante. Resolvi copiar o script e aplicar ele aqui. Mas aconteceram duas coisas.

Na primeira vez q executei o script ele me deu o seguinte erro:
line 23: cbq: command not found

Aí fui no script e na linha 23 e observei q estava assim:
cbq stats | while read p0 p1 p2 p3 p4 p5 p6 p7 p8 p9

Mudei para:
/etc/init.d/cbq stats | while read p0 p1 p2 p3 p4 p5 p6 p7 p8 p9

Apenas coloquei o caminho todo do script cbq.

Bom, aí quando salvei o script e rodei, me retorna várias vezes o seguinte erro:

eth1, rule 1052: 615 kbps in 0 seconds
expr: erro de sintaxe
expr: erro de sintaxe
expr: erro de sintaxe

Bom, olhei o script de novo e vi uma coisa estranha: Na linha 24 logo abaixo do comando cbq stats tinha a seguinte linha:
#cat x | while read p0 p1 p2 p3 p4 p5 p6 p7 p8 p9

Imaginei q ela deveria estar assim:
cat x | while read p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 (ou seja, sem a cerquilha, pois a cerquilha iria caracterizar a linha comentada, vc concorda?).

Bom, mesmo tirando a cerquilha e fazendo as alteraões que achei necessárias, ainda me dá o seguinte erro:

line 59: syntax error: unexpected end of file

Você poderia me ajudar a ver o que estaria dando errado? Dar uma revisada no script, pois nao entendo muito de scripts. Uso aqui um Debian Etch. Agradeço desde já. Abraço.

Contribuir com comentário

Entre na sua conta para comentar.