vanderth / laravel-snmp
基于扩展 php-snmp 的 SNMP 包,用于查询网络,兼容 Laravel 框架
Requires
- php: ^8.1
- ext-snmp: *
- illuminate/console: ^10.0|^11.0
- illuminate/database: ^10.0|^11.0
- illuminate/support: ^10.0|^11.0
Requires (Dev)
- phpunit/phpunit: ^10.1
This package is auto-updated.
Last update: 2024-10-03 11:19:16 UTC
README
此 Laravel 包允许您通过 Laravel 应用程序运行对网络主机 snmp-agent 的 SNMP 查询。
在您的 Laravel 应用程序中运行任何 SNMP 查询之前,您必须在操作系统上安装 snmp,并在 php.ini 中启用 ext-php 扩展以进行查询。
安装
要求
在操作系统级别,您需要安装 net-snmp。
Debian
apt-get install -y snmp
Centos / RHEL
yum install \ net-snmp.x86_64 \ net-snmp-agent-libs.x86_64 \ net-snmp-libs.x86_64 \ php-snmp.x86_64
在 php.ini 中启用扩展 ext-php。
Composer 安装
您可以通过 composer 安装此包。
composer require vanderth/laravel-snmp
发布供应商资产
运行此命令,您可以发布供应商资产。这允许修改默认包配置。
php artisan snmp:install
使用方法
单个 SNMP Poller 类
use Vanderth\Snmp\SnmpPoller; use Vanderth\Snmp\Pollers\IfTablePoller; use SNMP; $session = new SNMP(SNMP::VERSION_2C, '192.168.10.254', 'csnmpv2c'); $poller = new SnmpPoller(); $poller->setSnmpSession($session)->addPoller(IfTablePoller::class)->run();
使用单个 SNMP Poller 类对网络主机 snmp-agent 的 SNMP 查询的输出返回包含数据字段内部数据的数据对象数组。
注意:出于演示目的,已从查询输出中删除了 3 和 22 之间的所有端口。
=> [
"IfTablePoller" => {#653
+"data": [
1 => [
"ifIndex" => 1,
"ifDescr" => "",
"ifType" => 6,
"ifMtu" => 1500,
"ifSpeed" => 1000000000,
"ifPhysAddress" => "90:6C:AC:62:82:5B",
"ifAdminStatus" => 1,
"ifOperStatus" => 1,
"ifLastChange" => 0,
"ifInOctets" => 3808861579,
"ifInUcastPkts" => 1130144532,
"ifInDiscards" => 0,
"ifInErrors" => 2,
"ifInUnknownProtos" => 0,
"ifOutOctets" => 1986123900,
"ifOutUcastPkts" => 735043481,
"ifOutDiscards" => 0,
"ifOutErrors" => 0,
],
2 => [
"ifIndex" => 2,
"ifDescr" => "",
"ifType" => 6,
"ifMtu" => 1500,
"ifSpeed" => 0,
"ifPhysAddress" => "90:6C:AC:62:82:5C",
"ifAdminStatus" => 1,
"ifOperStatus" => 2,
"ifLastChange" => 0,
"ifInOctets" => 0,
"ifInUcastPkts" => 0,
"ifInDiscards" => 0,
"ifInErrors" => 0,
"ifInUnknownProtos" => 0,
"ifOutOctets" => 0,
"ifOutUcastPkts" => 0,
"ifOutDiscards" => 0,
"ifOutErrors" => 0,
],
3 => [ ... ],
4 => [ ... ],
5 => [ ... ],
6 => [ ... ],
7 => [ ... ],
8 => [ ... ],
9 => [ ... ],
10 => [ ... ],
11 => [ ... ],
12 => [ ... ],
13 => [ ... ],
14 => [ ... ],
15 => [ ... ],
16 => [ ... ],
17 => [ ... ],
18 => [ ... ],
19 => [ ... ],
20 => [ ... ],
21 => [ ... ],
22 => [ ... ],
],
+"poller": "Vanderth\Snmp\Pollers\IfTablePoller",
+"result": "OK",
+"table": "ifTable",
},
]
多个 SNMP Poller 类
use Vanderth\Snmp\SnmpPoller; use Vanderth\Snmp\Pollers\IfTablePoller; use Vanderth\Snmp\Pollers\IfExtendTablePoller; use SNMP; $session = new SNMP(SnmpPoller::V2c, 'localhost', 'public'); $poller = new SnmpPoller(); $pollerClasses = [ IfTablePoller::class, IfExtendTablePoller::class, ]; $poller->setSnmpSession($session) ->addPollers($pollerClasses) ->run();
使用多个 SNMP Poller 类对网络主机 snmp-agent 的 SNMP 查询的输出返回包含数据字段内部数据的数据对象数组。
注意:出于演示目的,已从查询输出中删除了 3 和 22 之间的所有端口。
=> [
"IfTablePoller" => {
+"data" => [
1 => [
"ifIndex" => 1,
"ifDescr" => "",
"ifType" => 6,
"ifMtu" => 1500,
"ifSpeed" => 1000000000,
"ifPhysAddress" => "90:6C:AC:62:82:5B",
"ifAdminStatus" => 1,
"ifOperStatus" => 1,
"ifLastChange" => 0,
"ifInOctets" => 2518775779,
"ifInUcastPkts" => 1129071509,
"ifInDiscards" => 0,
"ifInErrors" => 2,
"ifInUnknownProtos" => 0,
"ifOutOctets" => 1941896771,
"ifOutUcastPkts" => 734653319,
"ifOutDiscards" => 0,
"ifOutErrors" => 0,
],
2 => [
"ifIndex" => 2,
"ifDescr" => "",
"ifType" => 6,
"ifMtu" => 1500,
"ifSpeed" => 0,
"ifPhysAddress" => "90:6C:AC:62:82:5C",
"ifAdminStatus" => 1,
"ifOperStatus" => 2,
"ifLastChange" => 0,
"ifInOctets" => 0,
"ifInUcastPkts" => 0,
"ifInDiscards" => 0,
"ifInErrors" => 0,
"ifInUnknownProtos" => 0,
"ifOutOctets" => 0,
"ifOutUcastPkts" => 0,
"ifOutDiscards" => 0,
"ifOutErrors" => 0,
],
3 => [ ... ],
4 => [ ... ],
5 => [ ... ],
6 => [ ... ],
7 => [ ... ],
8 => [ ... ],
9 => [ ... ],
10 => [ ... ],
11 => [ ... ],
12 => [ ... ],
13 => [ ... ],
14 => [ ... ],
15 => [ ... ],
16 => [ ... ],
17 => [ ... ],
18 => [ ... ],
19 => [ ... ],
20 => [ ... ],
21 => [ ... ],
22 => [ ... ],
],
+"poller": "Vanderth\Snmp\Pollers\IfTablePoller",
+"result": "OK",
+"table": "ifTable",
},
"IfExtendTablePoller" => {
+"data" => [
1 => [
"ifName" => "wan1",
"ifInMulticastPkts" => 0,
"ifInBroadcastPkts" => 0,
"ifOutMulticastPkts" => 0,
"ifOutBroadcastPkts" => 0,
"ifHCInOctets" => 1123505241577,
"ifHCInUcastPkts" => 1129071513,
"ifHCInMulticastPkts" => 0,
"ifHCInBroadcastPkts" => 0,
"ifHCOutOctets" => 255344967343,
"ifHCOutUcastPkts" => 734653320,
"ifHCOutMulticastPkts" => 0,
"ifHCOutBroadcastPkts" => 0,
"ifLinkUpDownTrapEnable" => 1,
"ifHighSpeed" => 1000,
"ifPromiscuousMode" => 2,
"ifConnectorPresent" => 1,
"ifAlias" => "",
"ifCounterDiscontinuityTime" => 0,
],
2 => [
"ifName" => "wan2",
"ifInMulticastPkts" => 0,
"ifInBroadcastPkts" => 0,
"ifOutMulticastPkts" => 0,
"ifOutBroadcastPkts" => 0,
"ifHCInOctets" => 0,
"ifHCInUcastPkts" => 0,
"ifHCInMulticastPkts" => 0,
"ifHCInBroadcastPkts" => 0,
"ifHCOutOctets" => 0,
"ifHCOutUcastPkts" => 0,
"ifHCOutMulticastPkts" => 0,
"ifHCOutBroadcastPkts" => 0,
"ifLinkUpDownTrapEnable" => 1,
"ifHighSpeed" => 0,
"ifPromiscuousMode" => 2,
"ifConnectorPresent" => 1,
"ifAlias" => "",
"ifCounterDiscontinuityTime" => 0,
],
3 => [ ... ],
4 => [ ... ],
5 => [ ... ],
6 => [ ... ],
7 => [ ... ],
8 => [ ... ],
9 => [ ... ],
10 => [ ... ],
11 => [ ... ],
12 => [ ... ],
13 => [ ... ],
14 => [ ... ],
15 => [ ... ],
16 => [ ... ],
17 => [ ... ],
18 => [ ... ],
19 => [ ... ],
20 => [ ... ],
21 => [ ... ],
22 => [ ... ],
],
+"poller" => "Vanderth\Snmp\Pollers\IfExtendedTablePoller",
+"result" => "OK",
+"table" => "ifXTable",
}
]
测试
要运行测试,请在控制台中运行
composer test
待办事项
- 添加 snmp 的 toArray 方法的结果
- 等等...
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
安全性
如果您发现任何与安全性相关的问题,请通过电子邮件 juvan.nayoan@gmail.com 联系,而不是使用问题跟踪器。
标准
PHP 包 IPv4 地址转换器符合以下标准
致谢
此包基于 snmp-poller
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。