+ Responder ao Tópico



  1. #1

    Padrão Mikrotik API + PHP + Mysql

    Ola Amigos, vi que no wiki do mikrotik tem uma API para php
    mas não estou conseguindo fazer a API consultar o ip, usuario e senha no banco de dados sql. alguem ja fez isso o exeplo segue abaixo:
    (retorna o erro : Connection attempt #1 to $ip:8728... Connection attempt #2 to $ip:8728... )
    se alguem sabe como fazer por SSH, a comunicação php-mikrotik me deixe pelo menso um link pora favor.


    $API = new routeros_api();
    $API->debug = true;

    //BUSCA NO BANCO DE DADOS O USUARIO
    $ip= $row_mikrotik['ip'];
    $login= $row_mikrotik['ip'];
    $password= $row_mikrotik['ip'];


    if ($API->connect('$ip', '$login', '$password'))

    grato

  2. #2

    Padrão

    por um acaso vc ativou o serviço de API no mikrotik ?

    ip >> services

  3. #3

    Padrão Ta Ativado sim.

    Citação Postado originalmente por alexandrecorrea Ver Post
    por um acaso vc ativou o serviço de API no mikrotik ?

    ip >> services
    grande alexandre, esta ativado sim, tanto q se eu coloca o ip manualmente no api (php) ele funciona..add regras e etc..mas eu num quero colocar o ip, usuario e senha manual (funcionado normal). eu que q busque num DB mysql...
    tipo eu crio um front end em php-mysql, coloco os dados ip,usuario, senha no campo, salvo e depois ao clica no botão add regra..a api.php busca no banco de dados ip, usuario e senha e add a regra.

    lembrado...na api seu eu setar os dados funciona normal, não funciona buscando no db (uso dreamwaver)

  4. #4

    Padrão

    voce precisa fazer um select no BANCO de dados antes pra poder obter os dados de usuario e senha..

    algo assim oh:
    Código :
    <?php
    $ip = strip_tags($_GET['ip']);
     
    $server = \"189.0.0.1\";
    $user = \"usuario\";
    $senha = \"senha\";
    $banco = \"apimikrotik\";
    $tabela = \"servidores\";
     
    $db = @mysql_connect($server,$user,$senha) or die(mysql_error());
    @mysql_select_db($banco,$db) or die(mysql_error());
     
    $query = \"SELECT * from \" . $tabela . \" WHERE ip = ' . $ip . ' LIMIT 0,1\";
    $sql = @mysql_query($query,$db) or die(mysql_error());
    $total = mysql_num_rows($sql);
    if ($total == 1) {
         $row = mysq_fetch_row($sql);
         $m_ip = $row['ip'];
         $m_login = $row['login'];
         $m_password = $row['password'];
         if ($API->connect($m_ip,$m_login,$m_senha))  {
              //codigo do api depois da conexao....
         }
         else { die('Erro ao conectar mikrotik'); }
    }
    else { die('Erro, total servidores encontrados: -> ' . $total); }

    deve funcionar !! fiz aqui sem testar.. mas acho que ta ok..

    vc precisa criar no mysql o banco de dados chamado 'apimikrotik' e a tabela 'servidores', a estrutura da tabela servidores é assim:

    sid = int(11) auto_increment
    login = varchar(32)
    ip = varchar(15)
    password = varchar(32)

    ai vc cadastra os seus mikrotiks nesta tabela.. e pronto..

    vc executa assim:

    http://www.seusite.com.br/api.php?ip=192.168.33.66

    onde 192.168.33.66 é o ip do mikrotik q vc precisa adicionar/remover as regras

  5. #5

    Padrão Re: Mikrotik API + PHP + Mysql

    Pessoal,

    Estou precisando de alguem com certa experiencia em API para desenvolver um simples sistema de monitoramento de alguns Mikrotiks em PHP.
    Por favor, quem tiver interesse em prestar esse serviço, entre em contato comigo por MP.

    Obrigado.

  6. #6

    Padrão Re: Mikrotik API + PHP + Mysql

    Estou com um servidor Apache+PHP+MySQL por fora do MK estou tendo dificuldade para conectar o API com o MK, teria que liberar algo alem da API em service para a interface externa?

    Connection attempt #1 to 10.0.0.2:8728... Connection attempt #2 to 10.0.0.2:8728... Connection attempt #3 to 10.0.0.2:8728... Connection attempt #4 to 10.0.0.2:8728... Connection attempt #5 to 10.0.0.2:8728... Error...

    Internet >>> Servidor >>> MK >> Clientes

    Servidor: 10.0.0.1/24
    MK: 10.0.0.2/24

  7. #7

    Padrão Re: Mikrotik API + PHP + Mysql

    #Adicionada ip via API
    <?php
    require_once('api/Router_API_class.php');
    $API = new routeros_api();
    $nome = $UserName;
    $ip = $ip_rede .'/30';
    $interface = $ether;

    $API->debug = false;
    if ($API->connect($servidor_mk, $user_api, $pass_api)) { // Change this as necessery

    //Adiciona ID Desabilitado
    $API->write('/ip/address/add
    =disabled=no
    =interface='.$interface.'
    =comment='.$nome.'
    =address='.$ip.'');

    $ARRAY = $API->read();
    // print_r($ARRAY);
    $API->disconnect();
    }
    ?>

    #Remove IP via API

    <?php
    //Metodo $UserName
    require_once('api/Router_API_class.php');
    $API = new routeros_api();
    $API->debug = false;

    if ($API->connect($servidor_mk, $user_api, $pass_api)) { // Change this as necessery

    //Busca ID por MAC
    $API->write('/ip/address/print
    ?comment='.$UserName.'');
    $find = $API->read();

    // print_r($find);
    //Remove ID encontrado
    foreach ($find as $find){
    $API->write('/ip/address/remove', false);
    $API->write('=.id='.$find['.id']);
    $API->read();
    }

    // print_r($ARRAY);
    $API->disconnect();
    }
    ?>

    #Adciona MAC no access-list via API

    <?php
    require_once('api/Router_API_class.php');

    $API = new routeros_api();
    $API->debug = false;

    if($mac){
    if ($API->connect($ip_rep, $user_api, $pass_api)) { // Change this as necessery

    //Adiciona POP acess-list
    $API->write('/interface/wireless/access-list/add
    =forwarding=no
    =disabled=no
    =authentication=yes
    =interface='.$pop.'
    =comment='.$UserName.'
    =mac-address='.$mac.'');

    $ARRAY = $API->read();
    // print_r($ARRAY);
    $API->disconnect();
    }
    }
    ?>

  8. #8

    Post Re: Mikrotik API + PHP + Mysql

    Galera, esse é o posto certo, ativo API no /ip/services do mikrotik, ok !
    Após este passo não entendi como proceder, preciso fazer... criar um arquivo em php ?
    Estou um pouco perdido neste início, se alguém puder me orientar neste começo !
    Meu objetivo é criar um solução prática para controle interno conforme minhas necessidades!
    Qualquer tipo de ajuda será bem vinda, desde já fico grato a todos !

  9. #9

    Padrão Re: Mikrotik API + PHP + Mysql

    estou com o mesmo problema! a api não esta coletando informações do mysql!

  10. #10

    Padrão Re: Mikrotik API + PHP + Mysql

    Citação Postado originalmente por betopcx Ver Post
    Galera, esse é o posto certo, ativo API no /ip/services do mikrotik, ok !
    Após este passo não entendi como proceder, preciso fazer... criar um arquivo em php ?
    Estou um pouco perdido neste início, se alguém puder me orientar neste começo !
    Meu objetivo é criar um solução prática para controle interno conforme minhas necessidades!
    Qualquer tipo de ajuda será bem vinda, desde já fico grato a todos !
    Este script é para colocar em um arquivo php.
    Nesta linha coloca o IP, User e senha do mikrotik.
    "if ($API->connect($servidor_mk, $user_api, $pass_api))

  11. #11

    Padrão Re: Mikrotik API + PHP + Mysql

    Desculpe a ignorância, mas qual a função deste API que está sendo postado aqui no tópico? Pelo que vi os códigos são só para conectar ao MK.
    A pergunta é a seguinte: Eu posso desenvolver em php uma página capaz de eu poder adicionar clientes, mudar planos, bloquear, etc... ??
    Gostei desse tópico...

  12. #12

    Padrão Re: Mikrotik API + PHP + Mysql

    Bom noite, nao sei muito sobre php... mas ja tentou printar as variaveis pra ver o q esta sendo retornado do banco de dados?

    o meu aki com variaveis esta funcionando

    <?php
    $endereco = '192.168.0.1' ;
    $usuario = 'testeapi' ;
    $senha = 'testeapi' ;
    require('routeros_api.class.php');


    $API = new routeros_api();


    $API->debug = false;


    if ($API->connect($endereco, $usuario, $senha)) {

  13. #13

    Padrão Re: Mikrotik API + PHP + Mysql

    Galera, boa tarde.

    Alguém aí sabe/tem o comando (via API) para ler um arquivo de 'file' e imprimir na tela?

  14. #14

    Padrão Re: Mikrotik API + PHP + Mysql

    Boa noite pessoal, tive uma experiência bem parecida com a do colega que iniciou o tópico, e se bem entendi ele quer que o login seja feito via MySQL ao selecionar o servidor em uma página antes, consegui fazer algo parecido, fiz um select optgroup onde o valor era o IP e o nome dado a esse valor era o nome do servidor, para que eu soubesse qual servidor eu gostaria de acessar
    E funcionou perfeitamente, meu conselho é que faça o optgroup com um while do seu banco de dados com a tabela onde guardas os dados dos servidores, e tenham um usuário e senha definidos como padrão na routerboard, onde ficaria mais fácil a integração pois vc só faria a API receber o IP do servidor, pois nome e senha já estariam definidas na página que exibiria tal função desejada! Espero ter ajudado! Abraços!