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.
 
 
pasha 33e00299cd small fixes, readme updated 7 years ago
examples initial release 7 years ago
src small fixes, readme updated 7 years ago
.gitignore initial release 7 years ago
.scrutinizer.yml code sniffer config added 7 years ago
LICENSE license added, composer file updated 7 years ago
README.md small fixes, readme updated 7 years ago
composer.json license added, composer file updated 7 years ago

README.md

Latest Stable Version Total Downloads License Scrutinizer CQ

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=');