Mikrotik api - 使用 PEAR2 的实时带宽图

问题描述

我正在尝试使用 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 (将#修改为@)