Página 1 de 5 12345 ÚltimoÚltimo
+ Responder ao Tópico



  1. Pessoal, há algum tempo atrás fiz um post divulgado sobre um script que estava desenvolvendo para monitorar sinal dos clientes via página Web de uma maneira mais prática do que a usual via WinBox.

    Como o script naquela época estava muito pouco padrão, não divulguei o mesmo, e agora estou postando ele com as devidas alterações pra que o pessoal possa usar e também aperfeiçoá-lo.

    Vou fazer um passo-a-passo de como rodá-lo, bem como informar o ambiente em que ele é compatível.

    1. Requerimentos Básicos
    1.1 Máquina Linux que interaja com os Pops Mikrotik, melhor dizendo, uma máquina linux com permissão de acesso FTP aos mikrotiks;
    1.2 Possuir Servidor Apache, Tomcat ou outro server web instalado nesta mesma máquina.
    1.3 Nos POPs mikrotik que você for monitorar é necessário seguir os seguinte cenário: A monitoração é feita baseada nas 1.4 Access-List das Interfaces wireless, e obrigatoriamente, é necessário que todos os macs estejam cadastrados nas ACL-lists com comentários individuais para cada mac, ex:

    add mac-address=00:FF:FF:FF:FF:FF interface=wlan1 authentication=yes forwarding=no ap-tx-limit=0 client-tx-limit=0
    private-algo=none private-key="" comment="NomeDoUsuario" disabled=no

    Lembrando que o "comment" não pode ter separação por espaço, tipo: comment="Nome Do Usuario"

    Por fim, se seu ambiente é compatível com as condições acima citadas, o SCRIPT funcionará perfeitamente:

  2. 2. Mãos à obra: Segue-se o script inteiro, logo abaixo, irei citar passo a passo como botar pra funcionar:

    Código :
    #!/bin/bash
    # SCRIPT PARA MONITORAMENTO DE SINAL DE CLIENTES MIKROTIK
    # Descrição: Interage com o ftp do mikrotik, coletando dados
    #            referente ao sinal dos clientes (RX,TX,ACK,NOISE...)
    #            e gera uma página web com o resultado filtrado.
     
    # ZERA TODAS A VARIAVES E ARQUIVOS
    ARQUIVO=0
    ARQUIVO=0
    FTP_HOST=0
    FTP_USER=0
    FTP_PASS=0
    NOMEAP=0
    PAGINA=0
    PASTAFILES=0
    PASTAPAGINA=0
    echo > sinal2
    echo > sinal3
    echo > sinal4
     
    #######################################################################################################
    ## CONFIGURAÇÕES GERAIS ###############################################################################
    #######################################################################################################
    ACK_ALARME="91"                                                     # DEFINE VALOR MINIMO PARA O ACK
    SNR_ALARME="30"                                                     # DEFINE VALOR MINIMO PARA SNR
    ARQUIVO="sinal.txt"                                                 # NOME DO ARQUIVO SINAL DO MIKROTIK
    FTP_HOST="10.1.1.1"                                                 # IP DO MIKROTIK
    FTP_USER="admin"                                                    # USUARIO DO FTP  DO MIKROTIK
    FTP_PASS="senha"                                              # SENHA DO FTP DO MIKROTIK
    NOMEAP="ApTeste"                                                  # NOME DO AP
    PAGINA="mkt-apteste.html"                                           # NOME DO ARQUIVO PAGINA HTML
    PASTAFILES="/apteste"                                    # PASTA DE ARMAZENAMENTO LOCAL
    PASTAPAGINA="/srv/www/default/html/"                  # PASTA DE ARMAZENAMENTO PAGINA
    cd $PASTAFILES
     
    # ZERA ARQUIVOS
    echo > $PAGINA
    echo > $PAGINAFILES/$PAGINA
    echo > $PASTAPAGINA/$PAGINA



  3. Código :
    # ROTINA FTP DE DOWNLOAD DO  ARQUIVO (SINAL.TX) DO MIKROTIK
     cd $PASTAFILES
     ftp -in <<EOF
     open $FTP_HOST
     user $FTP_USER $FTP_PASS
     get $ARQUIVO
     bye
     EOF
     
     # ROTINA DE TRATAMENTO DO ARQUIVO PRA GERACAO DO HTML
     cat sinal.txt | grep ";;; " | cut -f1 | awk {'print "="$3'} > sinalusuario
     cat sinal.txt | fmt -w 1 | grep rx-rate > sinalrx
     cat sinal.txt | fmt -w 1 | grep tx-rate > sinaltx
     cat sinal.txt | fmt -w 1 | grep uptime > sinaluptime
     cat sinal.txt | fmt -w 1 | grep last-activity > sinallast
     cat sinal.txt | fmt -w 1 | grep signal-strength > sinalstrength
     cat sinal.txt | fmt -w 1 | grep signal-to-noise > sinalnoise
     cat sinal.txt | fmt -w 1 | grep tx-ccq > sinaltxccq
     cat sinal.txt | fmt -w 1 | grep p-throughput > sinaltrough
     cat sinal.txt | fmt -w 1 | grep ack-timeout > sinalack
     cat sinal.txt | fmt -w 1 | grep distance > sinaldistance
     paste sinalstrength sinalusuario sinalrx sinaltx sinalnoise sinaltxccq sinaltrough sinalack sinaldistance sinaluptime > sinal2.txt
     cat sinal2.txt | sed -e 's/rx-rate/RX/g' | sed -e 's/tx-rate/TX/g' | sed -e 's/uptime/Associado/g' | sed -e 's/signal-strength/sinal/g' | sed -e 's/signal-to-noise/Rel Sinal Ruído/g' | sed -e 's/ack-timeout/ACK/g' | sed -e 's/distance/Distancia/g' | sort -n > sinal3.txt
     cat sinal3.txt | sed 's/[\x09]//g' | sed 's/ /=/g' > sinal4.txt
     TOTAL=`cat $PASTAFILES/sinal4.txt | wc -l`
     
     # ROTINA DE GERACAO DO ARQUIVO HTML BASE
     echo \ "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>" >> $PAGINA
     echo \ "<html xmlns='http://www.w3.org/1999/xhtml'>                                                                              " >> $PAGINA
     echo \ "<head>                                                                                                                   " >> $PAGINA
     echo \ "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />                                               " >> $PAGINA
     echo \ "<title>Monitoramento de Sinal<title>                                                                                     " >> $PAGINA
     echo \ "<style type='text/css'>                                                                                                  " >> $PAGINA
     echo \ "<!--                                                                                                                     " >> $PAGINA
     echo \ ".style1 {color: #000000 font-size: 8px }                                                                                 " >> $PAGINA
     echo \ ".style6 {font-family: Arial, Helvetica, sans-serif; font-weight: bold; font-size: 88888888px; }                          " >> $PAGINA
     echo \ "-->                                                                                                                      " >> $PAGINA
     echo \ "</style>                                                                                                                 " >> $PAGINA
     echo \ "</head>                                                                                                                  " >> $PAGINA
     echo \ "<body>                                                                                                                   " >> $PAGINA
     echo \ "<div align='center' class='style1'>MONITORAMENTO DE SINAL WIRELESS MIKROTIK ("$NOMEAP")</div>                            " >> $PAGINA
     echo \ "<div align='center' class='style1'>Powered by NetPerdizes 2008</div>                                                     " >> $PAGINA
     echo \ "<div align=left' class='style1'><a href='javascript: history.go(-1)'><< VOLTAR</a></div>                                 " >> $PAGINA
     echo \ "<div align='center' class='style1'><hr></div>                                                                            " >> $PAGINA
     echo \ "<div align='center' class='style1'>Clientes Associados: "$TOTAL"</div>                                                   " >> $PAGINA
     echo \ "<div align='center' class='style1'><hr></div>                                                                            " >> $PAGINA
     echo \ "<table width='100%' border='0' cellpadding='2'>                                                                          " >> $PAGINA
     echo \ "  <tr class='style1'>                                                                                                    " >> $PAGINA
     echo \ "    <td width='14%' bgcolor='#FF9900'><span class='style3'>Usu&aacute;rio</span></td>                                    " >> $PAGINA
     echo \ "    <td width='6%' bgcolor='#FF9900'><span class='style3'>TX</span></td>                                                 " >> $PAGINA
     echo \ "    <td width='6%' bgcolor='#FF9900'><span class='style3'>RX</span></td>                                                 " >> $PAGINA
     echo \ "    <td width='6%%' bgcolor='#FF9900'><span class='style3'>Througput</span></td>                                         " >> $PAGINA
     echo \ "    <td width='8%' bgcolor='#FF9900'><span class='style3'>Uptime</span></td>                                             " >> $PAGINA
     echo \ "    <td width='4%' bgcolor='#FF9900'><span class='style3'>ACK</span></td>                                                " >> $PAGINA
     echo \ "    <td width='4%' bgcolor='#FF9900'><span class='style3'>TX-CCQ</span></td>                                             " >> $PAGINA
     echo \ "    <td width='4%' bgcolor='#FF9900'><span class='style3'>SNR </span></td>                                               " >> $PAGINA
     echo \ "    <td width='50%' bgcolor='#FF9900'><span class='style3'>Sinal</span></td>                                             " >> $PAGINA
     echo \ "  </tr>                                                                                                                  " >> $PAGINA
     
     # ROTINA DE ORGANIZACAO DOS DADOS
     for i in `cat $PASTAFILES/sinal4.txt`; do
     USUARIO=`echo $i | cut -d "=" -f6`
     TX=`echo $i | cut -d "=" -f14`
     RX=`echo $i | cut -d "=" -f10`
     THROUGPUT=`echo $i | cut -d "=" -f28`
     UPTIME=`echo $i | cut -d "=" -f40`
     ACK=`echo $i | cut -d "=" -f32`
     TXCCQ=`echo $i | cut -d "=" -f24`
     SNR=`echo $i | cut -d "=" -f20 | sed 's/dB//g'`
     SINAL=`echo $i | cut -d "=" -f5`
     SNRGRAFICO=`expr $SNR \* 5`
     
     # ROTINA DE VERIFICACAO DE SNR E ACK PARA ALARME VISUAL
     if [ $SNR -lt $SNR_ALARME ]
     then
        GRAFICO='pixelvermelho.png'
     else
        GRAFICO='pixelverde.png'
     fi
     
     if [ $ACK -gt $ACK_ALARME ]
     then
        GRAFICO2='pixelvermelho.png'
     else
        GRAFICO2='pixelverde.png'
     fi
     
     
     # ROTINA DE INSERCAO DE DADOS NO HTML
     echo \ "  <tr>                                                                                                                          " >> $PAGINA
     echo \ "    <td><span class='style1'>"$USUARIO"</span></td>                                                                             " >> $PAGINA
     echo \ "    <td><span class='style1'>"$TX"</span></td>                                                                                  " >> $PAGINA
     echo \ "    <td><span class='style1'>"$RX"</span></td>                                                                                  " >> $PAGINA
     echo \ "    <td><span class='style1'>"$THROUGPUT"</span></td>                                                                           " >> $PAGINA
     echo \ "    <td><span class='style1'>"$UPTIME"</span></td>                                                                              " >> $PAGINA
     echo \ "    <td><span class='style1'>"$ACK "<img src='http://www.netperdizes.com.br/"$GRAFICO2"' height='10px' width='10'></span></td>  " >> $PAGINA
     echo \ "    <td><span class='style1'>"$TXCCQ"</span></td>                                                                               " >> $PAGINA
     echo \ "    <td><span class='style1'>"$SNR"</td>                                                                                        " >> $PAGINA
     echo \ "    <td><span class='style1'><img src='http://www.netperdizes.com.br/"$GRAFICO"' height='10px' width='"$SNRGRAFICO"'>$SINAL</td>" >> $PAGINA
     echo \ "  </tr>                                                                                                                         " >> $PAGINA
     done
     echo \ "                                                                                                                                " >> $PAGINA
     echo \ "</table>                                                                                                                        " >> $PAGINA
     echo \ "<p>&nbsp;</p>                                                                                                                   " >> $PAGINA
     echo \ "<p>&nbsp;</p>                                                                                                                   " >> $PAGINA
     echo \ "</body>                                                                                                                         " >> $PAGINA
     echo \ "</html>                                                                                                                         " >> $PAGINA
     
     # COPIANDO HTML DO ARQUIVO LOCAL PARA PASTA DO SERVIDOR WEB
     cd $PASTAFILES
     cp $PAGINA $PASTAPAGINA

  4. Bom, vou testar..



  5. Tb, vou testar , EXCELENTE material didatico...PARABENS! .....Até que enfim um post de qualidade....ja tava desanimado.






Tópicos Similares

  1. Respostas: 3
    Último Post: 01-08-2017, 21:08
  2. Respostas: 1
    Último Post: 27-03-2011, 22:19
  3. Script Web Pronto Para Monitorar Sinal
    Por Kandango no fórum Redes
    Respostas: 27
    Último Post: 20-08-2008, 08:47
  4. Respostas: 11
    Último Post: 07-05-2008, 10:45
  5. Script para inclusão de clientes em servidor fedora 5
    Por fenix_se no fórum Linguagens de Programação
    Respostas: 0
    Último Post: 20-11-2006, 19:43

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L