joserf/mikrotik-php-api

Mikrotik RouterOS PHP API

1.0 2023-02-04 16:20 UTC

This package is auto-updated.

Last update: 2024-09-13 02:00:09 UTC


README

这是一个库,用于简化PHP7和PHP8的工作。

你可以使用这个库与RouterOS固件版本6.43+一起使用。

安装

composer require joserf/mikrotik-php-api

索引

最低要求

  • php >= 7.2|8.0
  • ext-sockets

如何使用

按照以下示例修改字段,更改IP、登录名和密码。

$config =
    (new Config())
        ->set('host', '192.168.*.*')
        ->set('port', 8728) 
        ->set('user', 'LOGIN')
        ->set('pass', 'SENHA');

配置Mikrotik

无法建立套接字会话,连接被拒绝。

这个错误意味着库无法连接到你的路由器,Mikrotik已关闭或API服务未激活。

转到IP -> Services并启用api

或者通过命令行

/ip service enable api 

需要更多安全性吗?

 /ip service set api address=192.168.*.*

使用示例

完整的exemplo.php文件。

<?php
require_once __DIR__ . '/../vendor/autoload.php';

error_reporting(E_ALL);

use \RouterOS\Config;
use \RouterOS\Client;
use \RouterOS\Query;

// Create config object with parameters
$config =
    (new Config())
        ->set('host', '192.168.*.*')
        ->set('user', 'LOGIN')
        ->set('pass', 'SENHA');

// Initiate client with config object
$client = new Client($config);

// Build query (Get resources in RouterOS)
$query = new Query("/system/resource/print");

// Send query to RouterOS
$request = $client->query($query);

// Read answer from RouterOS
$response = $client->read();

// Print result in json format
print_r(json_encode($response, JSON_PRETTY_PRINT));

?>

执行php exemplo.php命令后,我们将得到以下结果

[
    {
        "uptime": "5h34m8s",
        "version": "6.47.9 (long-term)",
        "build-time": "Feb\/08\/2021 12:48:33",
        "free-memory": "1037193216",
        "total-memory": "1073741824",
        "cpu": "Intel(R)",
        "cpu-count": "1",
        "cpu-frequency": "3791",
        "cpu-load": "0",
        "free-hdd-space": "8401121280",
        "total-hdd-space": "8490053632",
        "write-sect-since-reboot": "6296",
        "write-sect-total": "6296",
        "architecture-name": "x86",
        "board-name": "x86",
        "platform": "MikroTik"
    }
]

*我们可以通过Web进行测试:php -S localhost:8000/exemplo.php

监控接口流量

注释:ether1

// Build monitoring query (/interface monitor-traffic interface=ether1)
$query =
    (new Query('/interface/monitor-traffic'))
        ->equal('interface', 'ether1')
        ->equal('once');
        
// Monitoring details
$out = $client->query($query)->read();
print_r($out);        
        

我们可以只显示rx-bits-per-second

// show only rx-bits-per-second
print_r($out [0]["rx-bits-per-second"]);

在线用户总数(热点)

// Build query (Get users active in RouterOS)
$query = new Query("/ip/hotspot/active/print");

// Count total user active in RouterOS
print_r(count($response));

在线用户(热点)JSON

// Build query (Get users active in RouterOS)
$query = new Query("/ip/hotspot/active/print");

// Print result in JSON format
print_r(json_encode($response, JSON_PRETTY_PRINT));

运行时间

// Build query (Get resources in RouterOS)
$query = new Query("/system/resource/print");

// Show uptime active in RouterOS
echo 'Uptime: ' . json_encode($response[0]['uptime']);

链接