Postado originalmente por
jnveiga
olá pessoal venho aqui pedir ajuda a vcs sou novo na area de php
estou com um codigo php ssh que acessa o mikrotik faz a consulta ao "/ppp active print" e retorna blz
só q eu queria formatar pra ficar um trabalho melhor se alguem puder ajudar agradeço muito.
desde já obrigado
<?php
include('../../ssh/Net/SSH2.php');
$ssh = new Net_SSH2($192.168.88.1,$22);
if (!$ssh->login($admin,$senha)) {
$Html = "Impossivel conectar ao SERVIDOR";
} else {
$resultado = $ssh->exec('/ip address print detail');
$Html = "<pre>".$resultado."</pre>";
};
echo $Html;
?>
Boa noite
sei que é um tópico antigo, porém acredito que mais gente irá procurar num futuro próximo um sistema para monitoramento nas novas versões 6.4xx que pararam de ter suporte nas versões mais recentes para o api php mikrotik..
então seguindo a lógica a primeira coisa a se fazer é criar um script de conexão, esse script de conexão ssh pode se usar um banco de dados anterior onde os dados do mikrotik concentrador irão ficar guardados.
1- passo então criar um script de autenticacão ao mikrotik eu pessoalmente prefiro o php-ssh2, caso estejam usando algum servidor WEB linux debian segue o comando para instalar
apt-get install php-ssh2
2- após instalar vamos criar o primeiro arquivo de conexão com nome a titulo de exemplo conecta-mkt.php
Código PHP:
<?php
$usuario_ssh = 'nome-do-usuario-cadastrado-mikrotik';
$senha_ssh = 'senha-do-usuario-cadastrado-mikrotik';
$porta_ssh = 'porta-configurada-em-ip-services-ssh-na-mikrotik';
$ip_ssh= 'ip-da-mikrotik';
$methods = array('kex' => 'diffie-hellman-group1-sha1');
$connection = ssh2_connect($ip_ssh, $porta_ssh, $methods);
if ($connection) {
echo "conexao estabelecida com sucesso\n\n";
if (ssh2_auth_password($connection, $usuario_ssh, $senha_ssh)) {
sleep(2);
fclose($s);
}
else {
echo "autenticacao Falhou\n";
}
}
?>
3- após configurarmos o arquivo de conexão com a mikrotik vamos criar a página index.php onde iremos executar os nossos comandos ssh para a mikrotik e onde iremos obter as respostas..
Código PHP:
<?php
include_once("conecta-mkt.php");
$s = ssh2_exec($connection, '/system health gauges print');
stream_set_blocking($s,true);
$stream_out = ssh2_fetch_stream($s, SSH2_STREAM_STDIO);
$output1 = stream_get_contents($stream_out);
echo "<tr>";
echo "<pre>{$output1}</pre>";
sleep(2);
fclose($s);
$s = ssh2_exec($connection, '/system identity print');
stream_set_blocking($s,true);
$stream_out = ssh2_fetch_stream($s, SSH2_STREAM_STDIO);
$output2 = stream_get_contents($stream_out);
echo "<pre>{$output2}</pre>";
sleep(2);
fclose($s);
$s = ssh2_exec($connection, '/system clock print');
stream_set_blocking($s,true);
$stream_out = ssh2_fetch_stream($s, SSH2_STREAM_STDIO);
$output3 = stream_get_contents($stream_out);
echo "<pre>{$output3}</pre>";
sleep(2);
fclose($s);
$s = ssh2_exec($connection, '/system routerboard print');
stream_set_blocking($s,true);
$stream_out = ssh2_fetch_stream($s, SSH2_STREAM_STDIO);
$output4 = stream_get_contents($stream_out);
echo "<pre>{$output4}</pre>";
sleep(2);
fclose($s);
?>
O que a pagina acima faz PHP é em primeiro lugar verificar se tem conexão com a mikrotik usando o código (include_once("conecta-mkt.php"); ) ele vai efetuar a conexão e se tudo estiver ok ele irá executar o comando abaixo /system health gauges print.
É feito uma formatcão na resposta usando o echo "<pre>" , onde a resposta ficara armazenada no stream_out, e o mesmo cópia a resposta para $output1 e tratamos então a leitura do $output1, $output2, $output3, $output4, resultados de cada comando como descrito na foto abaixo