Ir para conteúdo
Fórum Script Brasil
  • 0

itegração mikrotik php


osmanobr

Pergunta

Prezados senhores estou desenvolvendo um sistema de controle de clientes para provedores mikrotik, o mesmo vai funcionar em um servidor de proxy. grande parte já está pronto mas estou com um problema: gostaria de pegar um texto de uma variável e separar os campos para gravar em um banco mysql, o problema é que não estou conseguindo separar o texto para pegar os valores corretos vou postar o texto que capturo do mk e mostrar o que quero pegar:

//texto lido no mk

Array

(

[.id] => *2

[server] => hotspot

[name] => dinacdh

[password] => 123

[profile] => Residencial

[uptime] => 5d14:58:44

[bytes-in] => 201884800

[bytes-out] => 1204634453

[packets-in] => 1103171

[packets-out] => 1214125

[dynamic] => false

[disabled] => false

[comment] => 06/10/09

)

em uma tabela eu tenho os campos que estão dentro de colchetes [ ] exemplo:

id; server; name; password;...

o que quero é pegar esses valores que estão na frente do "=>" e por nos campos da tabela como DINACDH e colocar no campo NAME

qualquer ajuda sera bem vinda.

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Tudo bem?

Também estou desenvolvendo uma aplicação unificando PHP e o Mikrotik.

Não sei se entendi muito bem a sua dúvida, porém, será que não seria possível quebrar a string logo depois de ">" e pegar somente os dados que estão na frente deste símbolo?

Você está desenvolvendo essa aplicação para Linux ou windows?

Está utilizando a API PHP?

Link para o comentário
Compartilhar em outros sites

  • 0

Como você está usando a api, basta armazenar o array retornado dentro de uma variável e depois inserir no banco. Exemplo retirado do próprio site onde tem a API (http://wiki.mikrotik.com/wiki/API_PHP_class):

<?php

require('routeros_api.class.php');

$API = new routeros_api();

$API->debug = true;

if ($API->connect('111.111.111.111', 'LOGIN', 'PASSWORD')) {

   $ARRAY = $API->comm('/interface/getall');

   $API->disconnect();

}

?>

Até +

André

Link para o comentário
Compartilhar em outros sites

  • 0

Cara também to desenvolvendo integrando Mikrotik e PHP.

Se eu entendi, você quer pegar os valores da array e poder trabalhar com variáveis, é isso?

Veja se serve...

http://wiki.mikrotik.com/wiki/Api_php_temp...stration_Tables

Repare na linha

$ARRAY = $API->comm('/interface/wireless/registration-table/print");

Ela pega as informações, porém não imprime corretamente. Acrescente =stats= depois do print, como exemplo abaixo, que ele funciona.

$ARRAY = $API->comm('/interface/wireless/registration-table/print 
                    =stats=');

Posta ae se era isso mesmo.

Link para o comentário
Compartilhar em outros sites

  • 0

A resposta do colega acima foi de grande ajuda.

consegui modificando esse código:

leio o array e ponho num combo(gambiarra)

echo '<select name="combo">';

foreach ($resultado as $s) {

$a=$a+1;

echo "<option value=".$a.">".$s['user']."<==>".$s['client-address']."</option>";}

echo "</combo>";

colegas eu consegui em partes, mas ainda estou com problemas tinha parado por uns tempos e agora estou tentando novamente. (eu uso hotspot ):

01 CADASTRANDO UM CLIENTE.

<?php require('routeros_api.class.php');

$API = new routeros_api();

$API->debug = true;

if ($API->connect('192.168.100.1', 'net', '123'))

{

$API->write('/ip/hotspot/user/add', false);

$API->write('=server=hotspot', false);

$API->write('=name=OSMANO', false); $ARRAY = $API->read();

print_r($ARRAY);

echo '=stats=';

//$API->disconnect();

}*/

?>

isso funciona mais vai um tempão e retorna tempo esgotado.

outra coisa que falta e entendimento de como digitar os comandos do mk no php

inserir um cliente

excluir um cliente

criar um profile

setar esse profile pro cliente

dentre outros necessários.

no mais até agora valeu demais a ajuda de vocês, sou muito grato a cada um que digitou qualquer caractere para tentar ajudar

quando eu tiver com o sistema funcional vou dispor no scriptbrasil pra quem precisar.

(ao moderador se quiser fechar o tópico esteja a vontade)

Link para o comentário
Compartilhar em outros sites

  • 0
A resposta do colega acima foi de grande ajuda.

consegui modificando esse código:

leio o array e ponho num combo(gambiarra)

echo '<select name="combo">';

foreach ($resultado as $s) {

$a=$a+1;

echo "<option value=".$a.">".$s['user']."<==>".$s['client-address']."</option>";}

echo "</combo>";

colegas eu consegui em partes, mas ainda estou com problemas tinha parado por uns tempos e agora estou tentando novamente. (eu uso hotspot ):

01 CADASTRANDO UM CLIENTE.

<?php require('routeros_api.class.php');

$API = new routeros_api();

$API->debug = true;

if ($API->connect('192.168.100.1', 'net', '123'))

{

$API->write('/ip/hotspot/user/add', false);

$API->write('=server=hotspot', false);

$API->write('=name=OSMANO', false); $ARRAY = $API->read();

print_r($ARRAY);

echo '=stats=';

//$API->disconnect();

}*/

?>

isso funciona mais vai um tempão e retorna tempo esgotado.

outra coisa que falta e entendimento de como digitar os comandos do mk no php

inserir um cliente

excluir um cliente

criar um profile

setar esse profile pro cliente

dentre outros necessários.

no mais até agora valeu demais a ajuda de vocês, sou muito grato a cada um que digitou qualquer caractere para tentar ajudar

quando eu tiver com o sistema funcional vou dispor no scriptbrasil pra quem precisar.

(ao moderador se quiser fechar o tópico esteja a vontade)

Salve, guerreiro...

Também quebrei (MUITO) a cabeça para desenvolver os "comandos" para o API do Mikrotik via PHP...

Aqui vão alguns que uso constantemente:

-> INCLUINDO CLIENTE:

function incluiMk($server, $dados){
 global $mkuser; global $mkpass;
 $API = new routeros_api();
 $API->debug = false;
 $API->connect($server, $mkuser, $mkpass);

 //-> incluindo na queue
 $API->comm('/queue/simple/add', array(
          "name" => $dados["name"],
             "target-addresses" => $dados["cliip"],
          "max-limit" => $dados["speed"],
          "disabled" => $dados["status"] ));
          
  //incluindo na ARP
  $API->comm('/ip/arp/add', array(
            "address" => $dados["cliip"],
            "interface" => $dados["interface"],
            "disabled" => $dados["status"],
            "mac-address" => $dados["mac"],
            "comment" => $dados["name"]));

 $API->disconnect();
}
-> BLOQUEANDO / DESBLOQUEANDO CLIENTES:
##-> BLOQUEANDO CLIENTES NO MIKROTIK <-##
function blockMk($server, $ipcli, $status){
global $mkuser;
global $mkpass;

 $API = new routeros_api();
 $API->debug = false;
 $API->connect($server, $mkuser, $mkpass);

#########################
### BLOQUEIO NA QUEUE ###
#########################
 //listando os dados do cadastro
 $API->write('/queue/simple/print', false);
 $API->write('?=target-addresses='.$ipcli.'/32');
 $res = $API->read($res);

 ///atribuindo id do cliente:
 $id = $res[1];
 $id = explode("=", $id);
 $id = $id[2];
 $retorno = $res[19];
 unset($res);

 //-> Bloqueando QUEUE
 if($status == "block"){ $stt = "yes"; }else if($status=="unblock"){ $stt = "no"; }
 $API->comm('/queue/simple/set', array(
              "disabled" => $stt,
            "numbers" => $id ));
            
 if($retorno != "!done"){ $guess = "erro"; } else { $guess = "ok"; }

####################### 
### BLOQUEIO NA ARP ###
#######################
 ### -> Recuperando ID do cliente:
 $API->write('/ip/arp/print', false);
 $API->write('?address='.$ipcli); 
 $res = $API->read($res);
 $cliid = $res[1];

 //-> retirando ID do cliente
 $id = explode("=", $cliid);
 $id = $id[2];
 unset($res, $cliid);

 ###-> Desabilitando:
 if($status == "block"){//pedido de bloqueio
 $API->comm('/ip/arp/disable', array(
             "numbers"=>$id));
 }else if($status == "unblock"){//pedido de desbloqueio
 $API->comm('/ip/arp/enable', array(
             "numbers"=>$id));
 }

 return $guess;

 $API->disconnect();
}

E, por enquanto é só o que sei fazer. Os desenvolvedores que já dominam Não compartilham informações.

Link para o comentário
Compartilhar em outros sites

  • 0
Prezados senhores estou desenvolvendo um sistema de controle de clientes para provedores mikrotik, o mesmo vai funcionar em um servidor de proxy. grande parte já está pronto mas estou com um problema: gostaria de pegar um texto de uma variável e separar os campos para gravar em um banco mysql, o problema é que não estou conseguindo separar o texto para pegar os valores corretos vou postar o texto que capturo do mk e mostrar o que quero pegar:

//texto lido no mk

Array

(

[.id] => *2

[server] => hotspot

[name] => dinacdh

[password] => 123

[profile] => Residencial

[uptime] => 5d14:58:44

[bytes-in] => 201884800

[bytes-out] => 1204634453

[packets-in] => 1103171

[packets-out] => 1214125

[dynamic] => false

[disabled] => false

[comment] => 06/10/09

)

em uma tabela eu tenho os campos que estão dentro de colchetes [ ] exemplo:

id; server; name; password;...

o que quero é pegar esses valores que estão na frente do "=>" e por nos campos da tabela como DINACDH e colocar no campo NAME

qualquer ajuda sera bem vinda.

Sei que o post é antigo, comecei a pouco tempo com PHP e tive que listar os dados do mikrotik no meu trabalho...se precisar manda um email que eu passo o código

paulospei@gmail.com

Abraços!

Link para o comentário
Compartilhar em outros sites

  • 0
Em 05/04/2011 em 11:43, leopaolo disse:

Cara também to desenvolvendo integrando Mikrotik e PHP.

Se eu entendi, você quer pegar os valores da array e poder trabalhar com variáveis, é isso?

 

Veja se serve...

 

http://wiki.mikrotik.com/wiki/Api_php_temp...stration_Tables

 

Repare na linha

 

$ARRAY = $API->comm('/interface/wireless/registration-table/print");

 

Ela pega as informações, porém não imprime corretamente. Acrescente =stats= depois do print, como exemplo abaixo, que ele funciona.

 

 

 

$ARRAY = $API->comm('/interface/wireless/registration-table/print 
                    =stats=');

 

 

 

Posta ae se era isso mesmo.

 

 

 

Esse vídeo mostra que eu quero fazer

Em 12/06/2012 em 21:34, EasyRider disse:

 

Salve, guerreiro...

Também quebrei (MUITO) a cabeça para desenvolver os "comandos" para o API do Mikrotik via PHP...

 

Aqui vão alguns que uso constantemente:

 

-> INCLUINDO CLIENTE:

 

 

function incluiMk($server, $dados){
 global $mkuser; global $mkpass;
 $API = new routeros_api();
 $API->debug = false;
 $API->connect($server, $mkuser, $mkpass);

 //-> incluindo na queue
 $API->comm('/queue/simple/add', array(
          "name" => $dados["name"],
             "target-addresses" => $dados["cliip"],
          "max-limit" => $dados["speed"],
          "disabled" => $dados["status"] ));
          
  //incluindo na ARP
  $API->comm('/ip/arp/add', array(
            "address" => $dados["cliip"],
            "interface" => $dados["interface"],
            "disabled" => $dados["status"],
            "mac-address" => $dados["mac"],
            "comment" => $dados["name"]));

 $API->disconnect();
}

-> BLOQUEANDO / DESBLOQUEANDO CLIENTES:

 

##-> BLOQUEANDO CLIENTES NO MIKROTIK <-##
function blockMk($server, $ipcli, $status){
global $mkuser;
global $mkpass;

 $API = new routeros_api();
 $API->debug = false;
 $API->connect($server, $mkuser, $mkpass);

#########################
### BLOQUEIO NA QUEUE ###
#########################
 //listando os dados do cadastro
 $API->write('/queue/simple/print', false);
 $API->write('?=target-addresses='.$ipcli.'/32');
 $res = $API->read($res);

 ///atribuindo id do cliente:
 $id = $res[1];
 $id = explode("=", $id);
 $id = $id[2];
 $retorno = $res[19];
 unset($res);

 //-> Bloqueando QUEUE
 if($status == "block"){ $stt = "yes"; }else if($status=="unblock"){ $stt = "no"; }
 $API->comm('/queue/simple/set', array(
              "disabled" => $stt,
            "numbers" => $id ));
            
 if($retorno != "!done"){ $guess = "erro"; } else { $guess = "ok"; }

####################### 
### BLOQUEIO NA ARP ###
#######################
 ### -> Recuperando ID do cliente:
 $API->write('/ip/arp/print', false);
 $API->write('?address='.$ipcli); 
 $res = $API->read($res);
 $cliid = $res[1];

 //-> retirando ID do cliente
 $id = explode("=", $cliid);
 $id = $id[2];
 unset($res, $cliid);

 ###-> Desabilitando:
 if($status == "block"){//pedido de bloqueio
 $API->comm('/ip/arp/disable', array(
             "numbers"=>$id));
 }else if($status == "unblock"){//pedido de desbloqueio
 $API->comm('/ip/arp/enable', array(
             "numbers"=>$id));
 }

 return $guess;

 $API->disconnect();
}

 

 

E, por enquanto é só o que sei fazer. Os desenvolvedores que já dominam Não compartilham informações.

Isso que eu quero fazer 

Link para o comentário
Compartilhar em outros sites

  • 0
Em 12/06/2012 em 21:34, EasyRider disse:

 

Salve, guerreiro...

Também quebrei (MUITO) a cabeça para desenvolver os "comandos" para o API do Mikrotik via PHP...

 

Aqui vão alguns que uso constantemente:

 

-> INCLUINDO CLIENTE:

 

 

function incluiMk($server, $dados){
 global $mkuser; global $mkpass;
 $API = new routeros_api();
 $API->debug = false;
 $API->connect($server, $mkuser, $mkpass);

 //-> incluindo na queue
 $API->comm('/queue/simple/add', array(
          "name" => $dados["name"],
             "target-addresses" => $dados["cliip"],
          "max-limit" => $dados["speed"],
          "disabled" => $dados["status"] ));
          
  //incluindo na ARP
  $API->comm('/ip/arp/add', array(
            "address" => $dados["cliip"],
            "interface" => $dados["interface"],
            "disabled" => $dados["status"],
            "mac-address" => $dados["mac"],
            "comment" => $dados["name"]));

 $API->disconnect();
}

-> BLOQUEANDO / DESBLOQUEANDO CLIENTES:

 

##-> BLOQUEANDO CLIENTES NO MIKROTIK <-##
function blockMk($server, $ipcli, $status){
global $mkuser;
global $mkpass;

 $API = new routeros_api();
 $API->debug = false;
 $API->connect($server, $mkuser, $mkpass);

#########################
### BLOQUEIO NA QUEUE ###
#########################
 //listando os dados do cadastro
 $API->write('/queue/simple/print', false);
 $API->write('?=target-addresses='.$ipcli.'/32');
 $res = $API->read($res);

 ///atribuindo id do cliente:
 $id = $res[1];
 $id = explode("=", $id);
 $id = $id[2];
 $retorno = $res[19];
 unset($res);

 //-> Bloqueando QUEUE
 if($status == "block"){ $stt = "yes"; }else if($status=="unblock"){ $stt = "no"; }
 $API->comm('/queue/simple/set', array(
              "disabled" => $stt,
            "numbers" => $id ));
            
 if($retorno != "!done"){ $guess = "erro"; } else { $guess = "ok"; }

####################### 
### BLOQUEIO NA ARP ###
#######################
 ### -> Recuperando ID do cliente:
 $API->write('/ip/arp/print', false);
 $API->write('?address='.$ipcli); 
 $res = $API->read($res);
 $cliid = $res[1];

 //-> retirando ID do cliente
 $id = explode("=", $cliid);
 $id = $id[2];
 unset($res, $cliid);

 ###-> Desabilitando:
 if($status == "block"){//pedido de bloqueio
 $API->comm('/ip/arp/disable', array(
             "numbers"=>$id));
 }else if($status == "unblock"){//pedido de desbloqueio
 $API->comm('/ip/arp/enable', array(
             "numbers"=>$id));
 }

 return $guess;

 $API->disconnect();
}

 

 

E, por enquanto é só o que sei fazer. Os desenvolvedores que já dominam Não compartilham informações.

E isso aqui que quero fazer

Link para o comentário
Compartilhar em outros sites

  • 0
Em 19/09/2019 em 17:53, Jacson12 disse:
function incluiMk($server, $dados){
 global $mkuser; global $mkpass;
 $API = new routeros_api();
 $API->debug = false;
 $API->connect($server, $mkuser, $mkpass);

 //-> incluindo na queue
 $API->comm('/queue/simple/add', array(
          "name" => $dados["name"],
             "target-addresses" => $dados["cliip"],
          "max-limit" => $dados["speed"],
          "disabled" => $dados["status"] ));
          
  //incluindo na ARP
  $API->comm('/ip/arp/add', array(
            "address" => $dados["cliip"],
            "interface" => $dados["interface"],
            "disabled" => $dados["status"],
            "mac-address" => $dados["mac"],
            "comment" => $dados["name"]));

 $API->disconnect();
}

-> BLOQUEANDO / DESBLOQUEANDO CLIENTES:

 
##-> BLOQUEANDO CLIENTES NO MIKROTIK <-##
function blockMk($server, $ipcli, $status){
global $mkuser;
global $mkpass;

 $API = new routeros_api();
 $API->debug = false;
 $API->connect($server, $mkuser, $mkpass);

#########################
### BLOQUEIO NA QUEUE ###
#########################
 //listando os dados do cadastro
 $API->write('/queue/simple/print', false);
 $API->write('?=target-addresses='.$ipcli.'/32');
 $res = $API->read($res);

 ///atribuindo id do cliente:
 $id = $res[1];
 $id = explode("=", $id);
 $id = $id[2];
 $retorno = $res[19];
 unset($res);

 //-> Bloqueando QUEUE
 if($status == "block"){ $stt = "yes"; }else if($status=="unblock"){ $stt = "no"; }
 $API->comm('/queue/simple/set', array(
              "disabled" => $stt,
            "numbers" => $id ));
            
 if($retorno != "!done"){ $guess = "erro"; } else { $guess = "ok"; }

####################### 
### BLOQUEIO NA ARP ###
#######################
 ### -> Recuperando ID do cliente:
 $API->write('/ip/arp/print', false);
 $API->write('?address='.$ipcli); 
 $res = $API->read($res);
 $cliid = $res[1];

 //-> retirando ID do cliente
 $id = explode("=", $cliid);
 $id = $id[2];
 unset($res, $cliid);

 ###-> Desabilitando:
 if($status == "block"){//pedido de bloqueio
 $API->comm('/ip/arp/disable', array(
             "numbers"=>$id));
 }else if($status == "unblock"){//pedido de desbloqueio
 $API->comm('/ip/arp/enable', array(
             "numbers"=>$id));
 }

 return $guess;

 $API->disconnect();
}

 

ola 

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...