routeros-api is a PHP client library for interacting with MikroTik's RouterOS API. This library allows developers to remotely manage and monitor MikroTik devices by executing various RouterOS commands directly from their PHP applications.
- Connection Management: Easily connect to MikroTik RouterOS using IP, username, and password.
- Command Execution: Execute RouterOS commands and retrieve results in a structured format.
- Data Parsing: Automatically parse responses from RouterOS API into associative arrays for easy manipulation.
- Error Handling: Comprehensive error handling to capture and respond to connection issues or invalid commands.
- Extensibility: The library is designed to be extended and customized according to your specific needs.
- Network Monitoring: Fetch and display traffic statistics, interface statuses, and other metrics from MikroTik devices.
- Configuration Management: Remotely change configurations, manage users, and update firmware on MikroTik routers.
- Automation: Automate repetitive tasks such as backup scheduling, user management, and network diagnostics.
- PHP 7.2+
- MikroTik RouterOS with API enabled
You can include this library in your project using Composer.
To install this package quickly using Composer, run the following command:
composer require comitidn/routeros-apiIf method 1 fails, use
composer require comitidn/routeros-api:*@devAlternatively, you can manually add the package to your composer.json file:
Add the following to your composer.json file:
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/comitidn/routeros-api.git"
}
],
"require": {
"comitidn/routeros-api": "dev-main"
}
}Run the following command to install the package:
composer updateHere's a basic example of how to use the routeros-api library:
use RouterOSAPI\RouterOSAPI;
$api = new RouterOSAPI();
$api->connect('192.168.88.1', 'admin', 'password', 8728); // 8728 port default for API
// Example: Retrieve all interfaces
$api->write('/interface/print');
$interfaces = $api->read();
print_r($interfaces);
$api->disconnect();You can extend the basic usage to handle more complex tasks, such as:
- Fetching Specific Data: Filter results based on specific parameters.
- Configuring Devices: Send commands to change configurations on the router.
- Error Handling: Capture and handle errors during the API communication. Example of filtering data:
$api->write('/interface/print', false);
$api->write('?name=ether1', true);
$ether1 = $api->read();
print_r($ether1);Contributions are welcome! If you have suggestions or bug reports, please open an issue or submit a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.