You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.7 KiB
2.7 KiB
RouterOS PHP7 API Client
composer require evilfreelancer/routeros-api-php
Small example
Get all IP addresses, analog via command line is /ip address print
<?php
require_once __DIR__ . '/vendor/autoload.php';
error_reporting(E_ALL);
use \RouterOS\Config;
use \RouterOS\Client;
use \RouterOS\Query;
/**
* Set the params
*/
$config = new Config();
$config->host = '192.168.1.104';
$config->user = 'admin';
$config->pass = 'admin';
/**
* Initiate client with parameters
*/
$client = new Client($config);
/**
* Build query
*/
$query = new Query('/ip/address/print');
/**
* Send query to socket server
*/
$request = $client->write($query);
var_dump($request);
/**
* Read answer from server
*/
$response = $client->read();
var_dump($response);
You can simplify your code and write then read from socket in one line:
$response = $client->write($query)->read();
var_dump($response);
How to write queries
You can write absolutely any queries to your router, for this you need to create a "Query" object whose first argument is the required command, after this you can add the attributes of the command to "Query" object.
More about attributes and "words" from which this attributes should be created here.
use \RouterOS\Query;
// One line query: Get all packages
$query = new Query('/system/package/getall');
// Multiline query: Enable interface and add tag
$query = new Query('/interface/set');
$query
->add('=disabled=no')
->add('=.id=ether1')
->add('.tag=4');
// Multiline query: Get all ethernet and VLAN interfaces
$query = new Query('/interface/print');
$query
->add('?type=ether')
->add('?type=vlan')
->add('?#|');
// Multiline query: Get all routes that have non-empty comment
$query = new Query('/ip/route/print');
$query
->add('?>comment=');
Links
- Cloud Hosted Router - Virtual images of RouterOS for your hypervisor
- RouterOS Manual:API - In case if you are wondering what is insane
