Página 1 de 2 12 ÚltimoÚltimo
+ Responder ao Tópico



  1. Galera venho trazer uma solução que a dias me atormentava.
    Problema: tenho uma torre na zona rural com 4 bullets 2 conectado a painéis aquário, tenho poucos clientes conectado nesses bullets, o problema é que eu não conseguia saber quem eram os usuarios que estavam conectados neste bullet (ou pelo menos era bem complicado saber quem estava conectado). Por isso resolvi automatizar esta tarefa, coisa um tanto quanto simples de se falar, mas não muito de se fazer.
    A solução encontrada foi capturar a pagina "stalist.html", que retorna os MAC Address conectados neste bullet, e depois tratar estes mac's e cruza-los com meu banco de dados de usuários.
    Bom partindo deste ponto criei uma função em php para fazer este processo, foi um tanto quanto dolorido fazer isso (por conta dos socos na mesa), mas consegui chegar a uma solução para esta tarefa.
    Segue abaixo o arquivo de função

    conectado.php
    Código PHP:
    <?php
    #################################################
    #            Classe para retornar               #
    #              o MAC Address de                 #
    #            Equipamentos Ubiquiti              #
    #            para cruzamento de dados           #
    #              com banco de dados               #
    #                                               #
    #              Desenvolvido por                 #
    #             Fernando Piovezan                 #
    #                Licença GPL                    #
    #################################################

    #################################################
    #                 Agradecimentos                #
    #duzao7667 -> forum.imasters.com.br             #
    #pisicohtico -> forum.clubedohardware.com.br    #
    #Manual PHP -> php.net                          #
    #Avaliador de ER -> arquivodecodigos.net        #
    #André D. Molin -> forum.imasters.com.br        #
    #Everton da Rosa -> phpbrasil.com               #
    #                                               #
    #################################################


    class retornaInfo {
          
    //variavel passada para a classe
          
    public $site;
       
    //função para retornar o mac address
       
    function retornaMac() {
          
    $url file_get_contents($this->site);    //estrai o site da url passada
             
    $pattern1 "/([0-9a-fA-F]{2}:{1}){5}[0-9a-fA-F]{2}/"//cria o primeiro pattern para expressao regular
             
    $pattern2 "/<[^>]*[^\/]>/i"//cria o segundo pattern para expressao regular
             
    $html preg_split($pattern2$url, -1PREG_SPLIT_NO_EMPTY PREG_SPLIT_DELIM_CAPTURE);
                for(
    $i=0;$i<count($html);$i++) {
                   
    preg_match($pattern1$html[$i], $resultado);
                      if (!empty(
    $resultado)) {
                         
    $mac[] = $html[$i];
                   }
             }
       return 
    $mac//retorna o endereço mac
       
    }
       
    //função para retornar o nivel de sinal
       
    function retornaSinal () {
          
    $url file_get_contents($this->site); //estrai o site da url passada
          
    $pattern3 "/<\/a[^>]*><\/td[^>]*><td[^>]*>(.*?)<\/td>/"//cria o terceiro pattern para expressao regular
          
    preg_match_all($pattern3$url$sinal); //retira o sinal por meio de expressao regular
       
    return $sinal[1]; //retorna o nivel do sinal
       
    }
    }
    ?>
    O que isto faz é pegar pagina "stalist.html" e trata-la para retornar o MAC Addres e o sinal em "-Dbm" e retornar um array com estas informações. Feito isso podemos utilizar estas informações do jeito que quiser e puder (as opções são muitas).

    para usar esta função é simples, como podem ver esta Orientado a Objeto então temos que trata-la com classe.

    Código PHP:
            $site "http://" .$nomeUsuario":" .$senhaUsuario"@" .$ip"/stalist.cgi";
            include_once 
    "conectado.php";
           
            
    $obj = new retornaInfo;
            
    $obj->site $site;

            
    $mac $obj->retornaMac();
            
    $sinal $obj->retornaSinal(); 
    a variável $site deve ter estes critérios pois precisa se autenticar para poder retornar a pagina
    - explicação das variaveis

    $nomeUsuario -> nome de usuario de conexão os Bullet
    $senhaUsuario -> senha do usuario de conexao ao Bullet
    $ip -> Ip do bullet para se conectar

    Uso estas variáveis, pois posso utilizar quantos radio quiser com esta mesma função, hoje uso com 4 bullet's mas pretendo aumentar para uns 8 - 12.
    abaixo um exemplo do uso desta função em página em ambiente de execução.

    Clique na imagem para uma versão maior

Nome:	         screen.jpg
Visualizações:	169
Tamanho: 	22,1 KB
ID:      	21161

    Bom espero que ajude a comunidade ai que utiliza Ubiquiti

    Obs. Foi testado em Bullet 2, Nano 2, Nano 5.
    Obs2. Não sou nenhuma fera em php, só sou muito, muito persistente.

    Qualquer duvida postem ai que na medida do possível eu ajudo.
    Arquivos Anexos Arquivos Anexos

  2. Parabéns fernandop, estou tb com vários nanos na rede onde fico olhando direto no nano mesmo, isso vai ajudar muito a toda a comunidade.

    Att.Juliano



  3. Fala Juliano, esqueci de colocar no tópico, o único problema um tanto quanto grave que encontrei foi que tive que salvar a senha de acesso em texto plano isso é uma brecha de segurança, mas estou procurando uma maneira de criptografar ela e depois descriptografar.

    Att

  4. Boa iniciativa de postar essa solução, obrigado por compartilhar. Não conheço php mas tenho um amigo fera vou falar com ele a respeito da senha, caso ache algo posto aqui.



  5. Parabens meu caro muinto bom poderia passar esse codigo de recuperação da imagem que sr. anexou agradeceria muinto obrigado






Tópicos Similares

  1. Respostas: 7
    Último Post: 05-02-2016, 14:23
  2. Respostas: 5
    Último Post: 01-10-2014, 08:27
  3. Respostas: 8
    Último Post: 28-05-2012, 08:17
  4. Solução definitiva virus em clientes RB em Bridge
    Por fwsolutions no fórum Redes
    Respostas: 22
    Último Post: 10-12-2010, 18:50
  5. Respostas: 9
    Último Post: 24-11-2009, 10:08

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L