lamoni/netconf

无厂商依赖的PHP NETCONF实现

v1.0.1 2017-10-20 21:19 UTC

This package is not auto-updated.

Last update: 2024-09-20 03:13:05 UTC


README

这是一个无厂商依赖的PHP实现NETCONF。我开发这个是为了能在此基础上扩展Junos(Juniper)特定的NETCONF API,并决定公开分享。

目标RFC

依赖关系

待办事项

示例

使用密码身份验证初始化NETCONF,然后发送自定义RPC调用

$netConf = new NetConf(
    "192.168.0.100",
    new NetConfAuthPassword(
        [
            "username" => "lamoni",
            "password" => "phpsux"
        ]
    )
);

echo $netConf->sendRPC(
    "<get-config>".
        "<source>".
            "<running/>".
        "</source>".
    "</get-config>"
);

编辑Junos设备的配置并提交更改

$netConf->editConfig(
    "<configuration>
        <interfaces>
            <interface>
                <name>fe-0/0/0</name>
                <description>Testing netconf</description>
            </interface>
        </interfaces>
    </configuration>",
    'candidate',
    ['custom-param' => 'custom-value']
);


if ($netConf->commit()->isRPCReplyOK()) {
    echo "Successfully committed, dude!";
}
else {
    echo "Something's wrong, man.";
}

使用NETCONF的子树过滤器获取特定配置

$getUsersNames = $netConf->getConfig(
    [
       "configuration/system/login/user" => [
           [
               "name"=>"user"
           ]
       ]
    ]
);

注意事项

  • 命名空间?
  • 更频繁地使用异常?
  • test-option: 元素仅在设备声明了:validate:1.1功能时才可指定(第8.6节)。
  • 我应该隐式锁定/解锁editConfig() ()和commit() ()调用中的配置吗?
  • 我应该删除方法中大量参数的长列表,并用单个数组替换它们吗?
    • 优点
      • 看起来更美观
      • 允许未来进行扩展而无需进行大量重构
    • 缺点
      • 方法将需要一些extract()类型的代码在顶部,以及通过(抽象类)验证传递的键
      • IDE的参数建议可能不起作用(?)
  • 过滤器中的XPath功能?