opensolutions / oss-snmp
一个针对讨厌SNMP、MIB和OID的人的PHP SNMP库!
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: 9.*
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,Iface
(MIBS/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/
目录下找到。这里有一个可用的在线版本:在线版本。