opensolutions/oss-snmp

一个针对讨厌SNMP、MIB和OID的人的PHP SNMP库!

v1.0.3 2023-02-22 20:58 UTC

This package is auto-updated.

Last update: 2024-09-23 00:19:14 UTC


README

一个针对憎恨SNMP、MIB和OID的人的PHP SNMP库!

我(Barry O'Donovan)憎恨SNMP!但是,我必须每天在我的公司Open Solutions和我们的客户中使用它。

请别误会,它是网络工程行业中的一个必要工具,但它也是一个真正的麻烦。寻找MIBs,OIBs,使它们工作,翻译它们,跨厂商的翻译,等等,等等。然后,当你找到你需要的东西时,几个月后当你再次需要它时,你会忘记它。

无论如何,在尝试创建一些自动L2拓扑图绘制工具(例如通过Cisco/Foundry发现协议)以及一些VLAN RSTP工具来显示端口状态的同时,我开始编写这个库,结果证明它非常有用。在这里展示,希望更广泛的网络工程社区会发现它有用,并且也能贡献回MIBs

文档

请参阅维基百科

示例用法

首先,我们需要使用主机名/IP地址和社区字符串实例化一个SNMP对象

$ciscosw = new \OSS_SNMP\SNMP( $ip, $community );

假设上面的是一个标准的Cisco交换机,比如说我想获取按VLAN ID索引的VLAN名称的关联数组

print_r( $ciscosw->useCisco_VTP()->vlanNames() );

结果如下所示

Array
(
    [1] => default
    [2] => mgmt
    [100] => cust-widgets
    [1002] => fddi-default
    ...
)

真的非常简单。作为另一个例子,如果你想要获取系统联系人

echo $ciscosw->useSystem()->contact();

许可证

这个软件库是在New BSD许可证(也称为修改版BSD许可证)下发布的。请参阅LICENSE文件或所有其他文件的标题,以获取完整文本。

MIBs - 坏消息...和一些好消息

我所称的MIBs定义在OSS_SNMP/MIBS中,并如上例所示定义了功能。

目前只定义了少数几个MIBs - 实际上是我迄今为止在其他项目中需要的。

但是添加自己的非常简单。并且给我发送一个pull request。

对于我所编写的MIBs,IfaceMIBS/Iface.php)作为一个示例,完整地展示了如何帮助未来的贡献者。但其他一些功能也非常有用。例如,Cisco/CDP MIB可以递归地发现你的整个L2网络拓扑。我们发布的另一个项目NOCtools,通过GraphViz提供了具体的示例。

支持SNMP v1、v2c和v3。它是只读的,因为在撰写本文时,我没有通过PHP设置SNMP值的需求。

需求

PHP 5.4是必需的。选择5.4(除了它已经很长时间被认为稳定外),是因为我们现在可以直接从函数调用中解引用数组

$name = $ciscosw->useCisco_VTP()->vlanNames()[ $vlanid ];

而不是老方法

$vlanNames = $ciscosw->useCisco_VTP()->vlanNames();
$name = $vlanNames[ $vlanid ];

由于大多数定义的MIBs都会遍历给定的树,几乎所有的定义函数都会返回一个数组。

唯一的另一个需求是php5-snmp库。

代码/phpDoc文档

可以通过在根目录中执行来生成文档

./bin/phpdoc.sh --force

并且可以在doc/目录下找到。这里有一个可用的在线版本:在线版本