anandaerditya / routeros-api-php
Mikrotik RouterOS API 通讯模块,适用于 PHP
1.5.3
2024-08-13 07:03 UTC
Requires
- php: ^8.0
- evilfreelancer/routeros-api-php: ^1.5
Requires (Dev)
README
这个库使用 PHP Socket 下的 API 客户端通讯器,感谢 EvilFreelancer 的代码仓库。此库提供基于 Winbox 下可用配置的内置方法,包括相应的命令和参数。目前,此库支持 RouterOS 的预 6.43 和后 6.43 版本,如 此代码仓库中所述。
变更日志
1.5.3 (错误修复)
- 在
send()
方法下添加对!trap
、!re
、!done
和!fatal
类型消息的处理程序。
1.4.2 (错误修复)
- 修复在
send()
方法下处理 Mikrotik API 响应消息的问题;
1.3.22 (热修复)
- 添加新的异常:ErrorException;
- 为每个方法添加错误处理程序,以捕获 mikrotik API 中的任何错误。
- 添加新的方法
ip_dhcp_server_lease()
ip_arp()
router_switch()
router_switch_port()
要求
PHP
: 版本 8.0 及以上ext-sockets
: PHP 的 Socket 扩展RouterOS
: pre-6.43 和 post-6.43 (在 RouterBoard 和 Cloud Router Switch 设备上测试过)
如何安装
在 composer 中,只需将此命令复制到您的项目中以开始添加此库。
composer require anandaerditya/routeros-api-php
使用库
如果您正在使用 Composer 项目,例如 Laravel 框架,您可以直接在 Erditya\RouterOSInstance
类下调用库。如下所示
include 'vendor/autoload.php'; use Erditya\RouterOSInstance; $router = new RouterOSInstance(); # Create connection $router = $router->connect( [ 'host' => '192.168.10.1', 'user' => 'username', 'pass' => 'password', 'port' => 8728 ] ); # Example : Fetch all IP Addresses if ($router->is_connected()) { # Get All Addresses var_dump($router->ip_addresses()); # Get address with interface ether2 var_dump($router->ip_addresses(['interface' => 'ether2'])); # Update address item in ID *2 var_dump($router->ip_addresses('set', [ '.id' => '*2', 'comment' => 'Some Comments' ])); }
或者,另一种方法是
include 'vendor/autoload.php'; use Erditya\RouterOSInstance; $router = new RouterOSInstance(); # Create connection $router = $router->connect( [ 'host' => '192.168.10.1', 'user' => 'username', 'pass' => 'password', 'port' => 8728 ] ); # Get All Addresses var_dump($router->ip_addresses()); # Get address with interface ether2 var_dump($router->ip_addresses(['interface' => 'ether2'])); # Update address item in ID *2 var_dump($router->ip_addresses('set', [ '.id' => '*2', 'comment' => 'Some Comments' ]));
可用方法
此库在此版本中所有可用方法的列表
-
通用
connect()
is_connected()
-
接口
interface_bridge()
interface_bridge_port()
interface_bridge_port()
interface_ethernet()
interface_list()
interface_list_member()
interface_vlan()
-
IP
ip_addresses()
ip_dhcp_server()
ip_dhcp_server_network()
ip_dns()
ip_firewall_filter()
ip_firewall_nat()
ip_hotspot_user_profiles()
ip_hotspot_users()
ip_hotspot_server_profiles()
ip_hotspot_servers()
ip_hotspot_ip_binding()
ip_pool()
ip_route()
ip_services()
-
系统
system_identity()
system_user_groups()
system_users()
-
交换机(仅适用于 Cloud Router Switch)
switch_crs_egress_vlan_tag()
switch_crs_mac_based_vlan()
switch_crs_port()
命令 & 参数,以及响应
此库中提供的方法都与 Winbox 的 CLI 终端类似。您可以在 Winbox 中查看更多信息。所有使用默认命令 print
的方法都返回数组形式的响应。如果您使用其他命令,如 add
、set
、remove
等,则方法将返回 true
,表示成功执行。