问题描述
我正在尝试使用 Ajax PHP 从 Mikrotik ether 显示实时带宽图,但我尝试连接 api 登录密码,因为 mikrotik routerOS api 在 6.43 和 6.43+ 版本之间更改了身份验证过程。 注意:https://forum.mikrotik.com/viewtopic.php?t=136475
现在我想使用 PEAR2 类。但我无法将 Data.PHP 文件转换为 PEAR2 类。
This IS Data.PHP file.
<?PHP require_once('routeros_api.class.PHP'); ?>
<?PHP
$ipRouteros = "xx.yy.xx.yy"; //ip router
$Username="xxxxxx"; //username
$Pass="xxxxxx"; //password
$api_port=8728;
$API = new RouterosAPI();
$API->debug = true;
if ($API->connect($ipRouteros,$Username,$Pass,$api_port)) {
$rows = array(); $rows2 = array();
$API->write("/interface/monitor-traffic",false);
$API->write("=interface=ether7",false); //change / ubah / ganti
$API->write("=once=",true);
$READ = $API->read(false);
$ARRAY = $API->ParseResponse($READ);
if(count($ARRAY)>0){
$rx = number_format($ARRAY[0]["rx-bits-per-second"]/1024,1);
$tx = number_format($ARRAY[0]["tx-bits-per-second"]/1024,1);
$rows['name'] = 'Tx';
$rows['data'][] = $tx;
$rows2['name'] = 'Rx';
$rows2['data'][] = $rx;
}else{
echo $ARRAY['!trap'][0]['message'];
}
}else{
echo "<font color='#ff0000'>Oh my god,why ?</font>";
}
$API->disconnect();
$result = array();
array_push($result,$rows);
array_push($result,$rows2);
print json_encode($result,JSON_NUMERIC_CHECK);
?>
和 Index.html 文件是
<!DOCTYPE HTML>
<html lang="es">
<head>
<Meta charset="utf-8" />
<title>Pepek</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="http://localhost/ppk/highchart/js/highcharts.js"></script>
<script type="text/javascript" src="http://localhost/ppk/highchart/js/themes/grid.js"></script>
<script>
var chart;
function requestDatta(interface) {
$.ajax({
url: 'data.PHP?interface=ether7',datatype: "json",success: function(data) {
var midata = JSON.parse(data);
if( midata.length > 0 ) {
var TX=parseInt(midata[0].data);
var RX=parseInt(midata[1].data);
var x = (new Date()).getTime();
shift=chart.series[0].data.length > 19;
chart.series[0].addPoint([x,TX],true,shift);
chart.series[1].addPoint([x,RX],shift);
document.getElementById("traffic").innerHTML=TX + " / " + RX;
}else{
document.getElementById("traffic").innerHTML="- / -";
}
},error: function(XMLHttpRequest,textStatus,errorThrown) {
console.error("Status: " + textStatus + " request: " + XMLHttpRequest); console.error("Error: " + errorThrown);
}
});
}
$(document).ready(function() {
Highcharts.setoptions({
global: {
useUTC: false
}
});
chart = new Highcharts.Chart({
chart: {
renderTo: 'container',animation: Highcharts.svg,type: 'spline',//line,//area,//spline
events: {
load: function () {
setInterval(function () {
requestDatta(document.getElementById("interface").value);
},1000);
}
}
},title: {
text: 'Monitoring'
},xAxis: {
type: 'datetime',tickPixelInterval: 150,maxZoom: 20 * 1000
},yAxis: {
minPadding: 0.2,maxPadding: 0.2,title: {
text: 'Traffic',margin: 80
}
},series: [{
name: 'TX',data: []
},{
name: 'RX',data: []
}]
});
});
</script>
</head>
<body>
<div id="container" style="min-width: 400px; height: 400px; margin: 0 auto"></div>
<input type=hidden name="interface" id="interface" type="text" />
<div id="traffic"></div>
</body>
</html>
任何人都可以将旧的 api 转换为 PEAR2 文件
视频教程是https://www.youtube.com/watch?v=1JLpECyJKf0
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)