南方朋友 / mikrotik-api
一个舒适的路由OS库包装器,通过API访问MikroTik路由器
1.0.2beta
2019-07-26 20:38 UTC
Requires
- php: ^7.3
- ext-iconv: *
- ext-json: *
- ext-mbstring: *
- blake-gardner/mac-address: ^2.1
- darsyn/ip: ^4.0
- pear2/net_routeros: ^1.0@beta
- psr/log: ^1.1
This package is auto-updated.
Last update: 2024-09-27 08:56:16 UTC
README
通过API访问MikroTik路由器的路由OS库的舒适包装器
入门指南
使用composer安装包
composer require suthernfriend/mikrotik-api
创建ConnectionManager
<?php use MikroTikApi\ConnectionManager; use Psr\Log\LoggerInterface; /** @var LoggerInterface $logger */ $logger = getPsrLoggerInterface(); /** @var array $config */ $config = [ "router1" => [ "host" => "10.1.1.1", "user" => "admin", "password" => "passwordForRouter1", ], "router2" => [ "host" => "10.1.2.1", "user" => "admin", "password" => "passwordForRouter2", ] ]; $connectionManager = new ConnectionManager($logger, $config);
/* Or via Symfony Service */ services: MikroTikApi\ConnectionManager: arguments: $config: router1: host: 10.1.1.1 user: admin password: passwordForRouter1 router2: host: 10.1.2.1 user: admin password: passwordForRouter2
示例用法
<?php namespace App; use MikroTikApi\ConnectionManager; use MikroTikApi\DataObjectArray; use MikroTikApi\DataObject; /** @var ConnectionManager $connectionManager */ $connectionManager = new ConnectionManager($logger, $config); // Read something /** @var DataObjectArray $obj */ $obj = $connectionManager->createRequest("router1")->ip->address->print(); echo "$obj\n"; /** * Will print p.e. * [ * { id: *27, address: 10.1.1.1/24, network: 10.1.1.0, interface: eth1, actualInterface: eth1, dynamic: false, invalid: false, disabled: false }, * { id: *2A, address: 192.168.1.1/24, network: 192.168.1.0, interface: trunk, actualInterface: trunk, dynamic: false, invalid: false, disabled: false } * ] */ // Add an object $vlanInterface = DataObject::create([ "name" => "myVlanInterface", "vlanId" => 50, "interface" => "trunk" ]); $connectionManager->createRequest("router1")->interface->vlan->add($vlanInterface); // Change an object $query = DataObject::create([ "address" => "192.168.1.100" ]); $lease = $connectionManager->createRequest("router1")->ip->dhcpServer->lease->print($query); $lease->address = "192.168.1.101"; $connectionManager->createRequest("router1")->ip->dhcpServer->lease->set($lease); // Use some other action // without argument createRequest() will use the first ! router given by $config $connectionManager->createRequest()->ip->dhcpServer->lease->makeStatic($lease);
通用
您可以通过将终端界面中的命令转换为camelCase来使用任何MikroTik命令
所有命令(甚至可能在未来版本的路由OS中出现的新的命令)都受支持!
示例
/system reboot到$connectionManager->createRequest()->system->reboot();/caps-man provisioning print到$connectionManager->createRequest()->capsMan->provisioning->print();/routing ospf-v3 virtual-link remove到$connectionManager->createRequest()->routing->ospfV3->virtualLink->remove();
对于属性也适用
<?php $prov = $connectionManager->createRequest()->capsMan->provisioning->print(\MikroTikApi\DataObject::create(["comment" => "first-config"]))->getOne(); echo $prov->radioMac . "\n"; echo $prov->commonNameRegexp . "\n";
值不会被转换
<?php $prov = $connectionManager->createRequest()->capsMan->provisioning->print(\MikroTikApi\DataObject::create(["comment" => "first-config"]))->getOne(); $prov->action = "create-dynamic-enabled";
类型
IP-地址、MAC地址、持续时间、数字和MikroTik ID会被转换为具有额外功能的类特殊实例。请参阅“类型”文件夹。
错误
我为了工作中的项目开发了它。因此,文档不多。如果需要,请随时在这里或通过我的电子邮件询问,我将尽力回答。
由于我没有时间测试所有内容,我预计代码中会有很多错误。请随时报告它们或提交拉取请求。
许可
Apache License 2.0