{"id":19527417,"url":"https://github.com/angelcamposm/snmp-poller","last_synced_at":"2025-04-26T10:31:50.452Z","repository":{"id":49169177,"uuid":"257021169","full_name":"angelcamposm/snmp-poller","owner":"angelcamposm","description":"A SNMP package to perform SNMP queries to network hosts through Laravel applications.","archived":false,"fork":false,"pushed_at":"2021-06-25T09:44:48.000Z","size":398,"stargazers_count":14,"open_issues_count":0,"forks_count":7,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-18T10:25:29.571Z","etag":null,"topics":["laravel","networking","php","snmp","snmp-agent","snmpv2","snmpv2c"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/angelcamposm.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null},"funding":{"github":null,"patreon":"acamposm","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2020-04-19T14:31:46.000Z","updated_at":"2024-05-25T07:00:29.000Z","dependencies_parsed_at":"2022-09-16T07:00:46.026Z","dependency_job_id":null,"html_url":"https://github.com/angelcamposm/snmp-poller","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angelcamposm%2Fsnmp-poller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angelcamposm%2Fsnmp-poller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angelcamposm%2Fsnmp-poller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angelcamposm%2Fsnmp-poller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/angelcamposm","download_url":"https://codeload.github.com/angelcamposm/snmp-poller/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250973033,"owners_count":21516464,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["laravel","networking","php","snmp","snmp-agent","snmpv2","snmpv2c"],"created_at":"2024-11-11T01:14:56.157Z","updated_at":"2025-04-26T10:31:50.080Z","avatar_url":"https://github.com/angelcamposm.png","language":"PHP","funding_links":["https://patreon.com/acamposm"],"categories":[],"sub_categories":[],"readme":"# Laravel SNMP Poller Package\n\n![Packagist PHP Version Support](https://img.shields.io/packagist/php-v/acamposm/snmp-poller)\n[![License](https://poser.pugx.org/acamposm/snmp-poller/license)](https://packagist.org/packages/acamposm/snmp-poller)\n[![Latest Stable Version](https://poser.pugx.org/acamposm/snmp-poller/v/stable)](https://packagist.org/packages/acamposm/snmp-poller)\n[![StyleCI](https://github.styleci.io/repos/257021169/shield?branch=master\u0026style=flat)](https://github.styleci.io/repos/257021169)\n[![Total Downloads](https://img.shields.io/packagist/dt/acamposm/snmp-poller.svg?style=flat)](https://packagist.org/packages/acamposm/snmp-poller)\n\n\u003cimg src=\"img/PackageHeader.png\"\u003e\n\nThis Laravel package allows you to run SNMP queries to the snmp-agent of network hosts through laravel applications.\n\nBefore you run any SNMP query in your [Laravel](https://laravel.com/) application, you must install snmp in the operating system and enable the PHP extension **ext-php** in the php.ini to make queries.\n\n- [Installation](#installation)\n  - [Requirements](#requirements)\n  - [Composer Install](#composer-install)\n  - [Publish vendor assets](#publish-vendor-assets)\n- [Usage](#usage)\n  - [Single SNMP Poller class](#single-snmp-poller-class)\n  - [Multiple SNMP Poller classes](#multiple-snmp-poller-classes)\n- [Testing](#testing)\n- [Changelog](#changelog)\n- [Contributing](#contributing)\n- [Security](#security)\n- [Standards](#standards)\n- [Credits](#credits)\n- [License](#license)\n\n\n## Installation\n\n### Requirements\n\nAt the Operating System level, you need to install net-snmp.\n\n**Debian**\n\n```bash\napt-get install -y snmp\n```\n\n**Centos / RHEL**\n\n```bash\nyum install \\\n  net-snmp.x86_64 \\\n  net-snmp-agent-libs.x86_64 \\\n  net-snmp-libs.x86_64 \\\n  php-snmp.x86_64\n```\n\nAt php.ini enable the extension ext-php.\n\n### Composer Install\n\nYou can install the package via composer:\n\n```bash\ncomposer require acamposm/snmp-poller\n```\n\n### Publish vendor assets\n\nRunning this command, you can publish the vendor assets. This allows to modify the default package configuration.\n\n````bash\nphp artisan snmp:install\n````\n\n## Usage\n\n\n\n### Single SNMP Poller class\n\n``` php\nuse Acamposm\\SnmpPoller\\SnmpPoller;\nuse Acamposm\\SnmpPoller\\Pollers\\IfTablePoller;\nuse SNMP;\n\n$session = new SNMP(SNMP::VERSION_2C, '192.168.10.254', 'csnmpv2c');\n\n$poller = new SnmpPoller();\n\n$poller-\u003esetSnmpSession($session)-\u003eaddPoller(IfTablePoller::class)-\u003erun();\n```\n\nThe output of an SNMP query to the snmp-agent of a network host with a single SNMP Poller class returns an array of objects with the data inside the data field.\n\n**Note**: For demonstration purposes, all ports between 3 and 22 have been removed from the output of the query.\n\n```\n=\u003e [\n  \"IfTablePoller\" =\u003e {#653\n    +\"data\": [\n      1 =\u003e [\n        \"ifIndex\" =\u003e 1,\n        \"ifDescr\" =\u003e \"\",\n        \"ifType\" =\u003e 6,\n        \"ifMtu\" =\u003e 1500,\n        \"ifSpeed\" =\u003e 1000000000,\n        \"ifPhysAddress\" =\u003e \"90:6C:AC:62:82:5B\",\n        \"ifAdminStatus\" =\u003e 1,\n        \"ifOperStatus\" =\u003e 1,\n        \"ifLastChange\" =\u003e 0,\n        \"ifInOctets\" =\u003e 3808861579,\n        \"ifInUcastPkts\" =\u003e 1130144532,\n        \"ifInDiscards\" =\u003e 0,\n        \"ifInErrors\" =\u003e 2,\n        \"ifInUnknownProtos\" =\u003e 0,\n        \"ifOutOctets\" =\u003e 1986123900,\n        \"ifOutUcastPkts\" =\u003e 735043481,\n        \"ifOutDiscards\" =\u003e 0,\n        \"ifOutErrors\" =\u003e 0,\n      ],\n      2 =\u003e [\n        \"ifIndex\" =\u003e 2,\n        \"ifDescr\" =\u003e \"\",\n        \"ifType\" =\u003e 6,\n        \"ifMtu\" =\u003e 1500,\n        \"ifSpeed\" =\u003e 0,\n        \"ifPhysAddress\" =\u003e \"90:6C:AC:62:82:5C\",\n        \"ifAdminStatus\" =\u003e 1,\n        \"ifOperStatus\" =\u003e 2,\n        \"ifLastChange\" =\u003e 0,\n        \"ifInOctets\" =\u003e 0,\n        \"ifInUcastPkts\" =\u003e 0,\n        \"ifInDiscards\" =\u003e 0,\n        \"ifInErrors\" =\u003e 0,\n        \"ifInUnknownProtos\" =\u003e 0,\n        \"ifOutOctets\" =\u003e 0,\n        \"ifOutUcastPkts\" =\u003e 0,\n        \"ifOutDiscards\" =\u003e 0,\n        \"ifOutErrors\" =\u003e 0,\n      ],\n      3 =\u003e [ ... ],\n      4 =\u003e [ ... ],\n      5 =\u003e [ ... ],\n      6 =\u003e [ ... ],\n      7 =\u003e [ ... ],\n      8 =\u003e [ ... ],\n      9 =\u003e [ ... ],\n      10 =\u003e [ ... ],\n      11 =\u003e [ ... ],\n      12 =\u003e [ ... ],\n      13 =\u003e [ ... ],\n      14 =\u003e [ ... ],\n      15 =\u003e [ ... ],\n      16 =\u003e [ ... ],\n      17 =\u003e [ ... ],\n      18 =\u003e [ ... ],\n      19 =\u003e [ ... ],\n      20 =\u003e [ ... ],\n      21 =\u003e [ ... ],\n      22 =\u003e [ ... ],\n    ],\n    +\"poller\": \"Acamposm\\SnmpPoller\\Pollers\\IfTablePoller\",\n    +\"result\": \"OK\",\n    +\"table\": \"ifTable\",\n  },\n]\n```\n\n### Multiple SNMP Pollers classes\n\n```php\nuse Acamposm\\SnmpPoller\\SnmpPoller;\nuse Acamposm\\SnmpPoller\\Pollers\\IfTablePoller;\nuse Acamposm\\SnmpPoller\\Pollers\\IfExtendedTablePoller;\nuse Acamposm\\SnmpPoller\\Pollers\\EntPhysicalTablePoller;\nuse Acamposm\\SnmpPoller\\Pollers\\LldpRemoteTablePoller;\nuse SNMP;\n\n$session = new SNMP(SNMP::VERSION_2C, '192.168.10.254', 'csnmpv2c');\n\n$poller = new SnmpPoller();\n\n$pollerClasses = [\n   IfTablePoller::class,\n   IfExtendedTablePoller::class,\n   EntPhysicalTablePoller::class,\n   LldpRemoteTablePoller::class,\n];\n\n$poller-\u003esetSnmpSession($session)\n       -\u003eaddPollers($pollerClasses)\n       -\u003erun();\n```\n\nThe output of an SNMP query to the snmp-agent of a network host with multiple SNMP Poller classes returns an array of objects with the data inside the data field.\n\n**Note**: For demonstration purposes, all ports between 3 and 22 have been removed from the output of the query.\n\n```\n=\u003e [\n  \"IfTablePoller\" =\u003e {\n    +\"data\" =\u003e [\n      1 =\u003e [\n        \"ifIndex\" =\u003e 1,\n        \"ifDescr\" =\u003e \"\",\n        \"ifType\" =\u003e 6,\n        \"ifMtu\" =\u003e 1500,\n        \"ifSpeed\" =\u003e 1000000000,\n        \"ifPhysAddress\" =\u003e \"90:6C:AC:62:82:5B\",\n        \"ifAdminStatus\" =\u003e 1,\n        \"ifOperStatus\" =\u003e 1,\n        \"ifLastChange\" =\u003e 0,\n        \"ifInOctets\" =\u003e 2518775779,\n        \"ifInUcastPkts\" =\u003e 1129071509,\n        \"ifInDiscards\" =\u003e 0,\n        \"ifInErrors\" =\u003e 2,\n        \"ifInUnknownProtos\" =\u003e 0,\n        \"ifOutOctets\" =\u003e 1941896771,\n        \"ifOutUcastPkts\" =\u003e 734653319,\n        \"ifOutDiscards\" =\u003e 0,\n        \"ifOutErrors\" =\u003e 0,\n      ],\n      2 =\u003e [\n        \"ifIndex\" =\u003e 2,\n        \"ifDescr\" =\u003e \"\",\n        \"ifType\" =\u003e 6,\n        \"ifMtu\" =\u003e 1500,\n        \"ifSpeed\" =\u003e 0,\n        \"ifPhysAddress\" =\u003e \"90:6C:AC:62:82:5C\",\n        \"ifAdminStatus\" =\u003e 1,\n        \"ifOperStatus\" =\u003e 2,\n        \"ifLastChange\" =\u003e 0,\n        \"ifInOctets\" =\u003e 0,\n        \"ifInUcastPkts\" =\u003e 0,\n        \"ifInDiscards\" =\u003e 0,\n        \"ifInErrors\" =\u003e 0,\n        \"ifInUnknownProtos\" =\u003e 0,\n        \"ifOutOctets\" =\u003e 0,\n        \"ifOutUcastPkts\" =\u003e 0,\n        \"ifOutDiscards\" =\u003e 0,\n        \"ifOutErrors\" =\u003e 0,\n      ],\n      3 =\u003e [ ... ],\n      4 =\u003e [ ... ],\n      5 =\u003e [ ... ],\n      6 =\u003e [ ... ],\n      7 =\u003e [ ... ],\n      8 =\u003e [ ... ],\n      9 =\u003e [ ... ],\n      10 =\u003e [ ... ],\n      11 =\u003e [ ... ],\n      12 =\u003e [ ... ],\n      13 =\u003e [ ... ],\n      14 =\u003e [ ... ],\n      15 =\u003e [ ... ],\n      16 =\u003e [ ... ],\n      17 =\u003e [ ... ],\n      18 =\u003e [ ... ],\n      19 =\u003e [ ... ],\n      20 =\u003e [ ... ],\n      21 =\u003e [ ... ],\n      22 =\u003e [ ... ],\n    ],\n    +\"poller\": \"Acamposm\\SnmpPoller\\Pollers\\IfTablePoller\",\n    +\"result\": \"OK\",\n    +\"table\": \"ifTable\",\n  },\n  \"IfExtendedTablePoller\" =\u003e {\n    +\"data\" =\u003e [\n      1 =\u003e [\n        \"ifName\" =\u003e \"wan1\",\n        \"ifInMulticastPkts\" =\u003e 0,\n        \"ifInBroadcastPkts\" =\u003e 0,\n        \"ifOutMulticastPkts\" =\u003e 0,\n        \"ifOutBroadcastPkts\" =\u003e 0,\n        \"ifHCInOctets\" =\u003e 1123505241577,\n        \"ifHCInUcastPkts\" =\u003e 1129071513,\n        \"ifHCInMulticastPkts\" =\u003e 0,\n        \"ifHCInBroadcastPkts\" =\u003e 0,\n        \"ifHCOutOctets\" =\u003e 255344967343,\n        \"ifHCOutUcastPkts\" =\u003e 734653320,\n        \"ifHCOutMulticastPkts\" =\u003e 0,\n        \"ifHCOutBroadcastPkts\" =\u003e 0,\n        \"ifLinkUpDownTrapEnable\" =\u003e 1,\n        \"ifHighSpeed\" =\u003e 1000,\n        \"ifPromiscuousMode\" =\u003e 2,\n        \"ifConnectorPresent\" =\u003e 1,\n        \"ifAlias\" =\u003e \"\",\n        \"ifCounterDiscontinuityTime\" =\u003e 0,\n      ],\n      2 =\u003e [\n        \"ifName\" =\u003e \"wan2\",\n        \"ifInMulticastPkts\" =\u003e 0,\n        \"ifInBroadcastPkts\" =\u003e 0,\n        \"ifOutMulticastPkts\" =\u003e 0,\n        \"ifOutBroadcastPkts\" =\u003e 0,\n        \"ifHCInOctets\" =\u003e 0,\n        \"ifHCInUcastPkts\" =\u003e 0,\n        \"ifHCInMulticastPkts\" =\u003e 0,\n        \"ifHCInBroadcastPkts\" =\u003e 0,\n        \"ifHCOutOctets\" =\u003e 0,\n        \"ifHCOutUcastPkts\" =\u003e 0,\n        \"ifHCOutMulticastPkts\" =\u003e 0,\n        \"ifHCOutBroadcastPkts\" =\u003e 0,\n        \"ifLinkUpDownTrapEnable\" =\u003e 1,\n        \"ifHighSpeed\" =\u003e 0,\n        \"ifPromiscuousMode\" =\u003e 2,\n        \"ifConnectorPresent\" =\u003e 1,\n        \"ifAlias\" =\u003e \"\",\n        \"ifCounterDiscontinuityTime\" =\u003e 0,\n      ],\n      3 =\u003e [ ... ],\n      4 =\u003e [ ... ],\n      5 =\u003e [ ... ],\n      6 =\u003e [ ... ],\n      7 =\u003e [ ... ],\n      8 =\u003e [ ... ],\n      9 =\u003e [ ... ],\n      10 =\u003e [ ... ],\n      11 =\u003e [ ... ],\n      12 =\u003e [ ... ],\n      13 =\u003e [ ... ],\n      14 =\u003e [ ... ],\n      15 =\u003e [ ... ],\n      16 =\u003e [ ... ],\n      17 =\u003e [ ... ],\n      18 =\u003e [ ... ],\n      19 =\u003e [ ... ],\n      20 =\u003e [ ... ],\n      21 =\u003e [ ... ],\n      22 =\u003e [ ... ],\n    ],\n    +\"poller\" =\u003e \"Acamposm\\SnmpPoller\\Pollers\\IfExtendedTablePoller\",\n    +\"result\" =\u003e \"OK\",\n    +\"table\" =\u003e \"ifXTable\",\n  },\n  \"EntPhysicalTablePoller\" =\u003e {\n    +\"data\" =\u003e [\n      1 =\u003e [\n        \"entPhysicalDescr\" =\u003e \"Fortinet FWF_51E, HW Serial#: FWF51E3U16000691\",\n        \"entPhysicalVendorType\" =\u003e \".1.3.6.1.4.1.12356.516.516.0\",\n        \"entPhysicalContainedIn\" =\u003e 0,\n        \"entPhysicalClass\" =\u003e 3,\n        \"entPhysicalParentRelPos\" =\u003e -1,\n        \"entPhysicalName\" =\u003e \"FWF_51E\",\n        \"entPhysicalHardwareRev\" =\u003e \"\",\n        \"entPhysicalFirmwareRev\" =\u003e \"\",\n        \"entPhysicalSoftwareRev\" =\u003e \"FortiWiFi-51E v6.2.3,build1066,191218 (GA)\",\n        \"entPhysicalSerialNum\" =\u003e \"FWF51E3U16000691\",\n        \"entPhysicalMfgName\" =\u003e \"Fortinet\",\n        \"entPhysicalModelName\" =\u003e \"FWF_51E\",\n        \"entPhysicalAlias\" =\u003e \"\",\n        \"entPhysicalAssetID\" =\u003e \"\",\n        \"entPhysicalIsFRU\" =\u003e 1,\n      ],\n      2 =\u003e [\n        \"entPhysicalDescr\" =\u003e \"Ethernet Port, Vitual Domain: root\",\n        \"entPhysicalVendorType\" =\u003e \".0.0.0\",\n        \"entPhysicalContainedIn\" =\u003e 1,\n        \"entPhysicalClass\" =\u003e 10,\n        \"entPhysicalParentRelPos\" =\u003e 1,\n        \"entPhysicalName\" =\u003e \"wan1\",\n        \"entPhysicalHardwareRev\" =\u003e \"\",\n        \"entPhysicalFirmwareRev\" =\u003e \"\",\n        \"entPhysicalSoftwareRev\" =\u003e \"\",\n        \"entPhysicalSerialNum\" =\u003e \"\",\n        \"entPhysicalMfgName\" =\u003e \"\",\n        \"entPhysicalModelName\" =\u003e \"\",\n        \"entPhysicalAlias\" =\u003e \"\",\n        \"entPhysicalAssetID\" =\u003e \"\",\n        \"entPhysicalIsFRU\" =\u003e 2,\n      ],\n      3 =\u003e [\n        \"entPhysicalDescr\" =\u003e \"Ethernet Port, Vitual Domain: root\",\n        \"entPhysicalVendorType\" =\u003e \".0.0.0\",\n        \"entPhysicalContainedIn\" =\u003e 1,\n        \"entPhysicalClass\" =\u003e 10,\n        \"entPhysicalParentRelPos\" =\u003e 2,\n        \"entPhysicalName\" =\u003e \"wan2\",\n        \"entPhysicalHardwareRev\" =\u003e \"\",\n        \"entPhysicalFirmwareRev\" =\u003e \"\",\n        \"entPhysicalSoftwareRev\" =\u003e \"\",\n        \"entPhysicalSerialNum\" =\u003e \"\",\n        \"entPhysicalMfgName\" =\u003e \"\",\n        \"entPhysicalModelName\" =\u003e \"\",\n        \"entPhysicalAlias\" =\u003e \"\",\n        \"entPhysicalAssetID\" =\u003e \"\",\n        \"entPhysicalIsFRU\" =\u003e 2,\n      ],\n      4 =\u003e [\n        \"entPhysicalDescr\" =\u003e \"Ethernet Port, Vitual Domain: root\",\n        \"entPhysicalVendorType\" =\u003e \".0.0.0\",\n        \"entPhysicalContainedIn\" =\u003e 1,\n        \"entPhysicalClass\" =\u003e 10,\n        \"entPhysicalParentRelPos\" =\u003e 3,\n        \"entPhysicalName\" =\u003e \"modem\",\n        \"entPhysicalHardwareRev\" =\u003e \"\",\n        \"entPhysicalFirmwareRev\" =\u003e \"\",\n        \"entPhysicalSoftwareRev\" =\u003e \"\",\n        \"entPhysicalSerialNum\" =\u003e \"\",\n        \"entPhysicalMfgName\" =\u003e \"\",\n        \"entPhysicalModelName\" =\u003e \"\",\n        \"entPhysicalAlias\" =\u003e \"\",\n        \"entPhysicalAssetID\" =\u003e \"\",\n        \"entPhysicalIsFRU\" =\u003e 2,\n      ],\n    ],\n    +\"poller\": \"Acamposm\\SnmpPoller\\Pollers\\EntPhysicalTablePoller\",\n    +\"result\": \"OK\",\n    +\"table\": \"entPhysical\",\n  },\n  \"LldpRemoteTablePoller\" =\u003e {\n    +\"data\" =\u003e [\n      \"710800216.10.1\" =\u003e [\n        \"lldpRemChassisIdSubtype\" =\u003e 4,\n        \"lldpRemChassisId\" =\u003e \"2C:FA:A2:27:2F:5C\",\n        \"lldpRemPortIdSubtype\" =\u003e 7,\n        \"lldpRemPortId\" =\u003e \"1021\",\n        \"lldpRemPortDesc\" =\u003e \"Alcatel-Lucent Enterprise 1/21\",\n        \"lldpRemSysName\" =\u003e \"WTG-OS6450P24-SW01\",\n        \"lldpRemSysDesc\" =\u003e \"Alcatel-Lucent Enterprise OS6450-P24 6.7.2.191.R04 GA, June 20, 2018.\",\n        \"lldpRemSysCapSupported\" =\u003e \"(\",\n        \"lldpRemSysCapEnabled\" =\u003e \"(\",\n      ],\n    ],\n    +\"poller\" =\u003e \"Acamposm\\SnmpPoller\\Pollers\\LldpRemoteTablePoller\",\n    +\"result\" =\u003e \"OK\",\n    +\"table\" =\u003e \"lldpRemTable\",\n  },\n]\n```\n\n## Testing\n\nFor running the tests, in the console run:\n\n``` bash\ncomposer test\n```\n\n## Changelog\n\nPlease see [CHANGELOG](CHANGELOG.md) for more information what has changed recently.\n\n## Contributing\n\nPlease see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.\n\n## Security\n\nIf you discover any security related issues, please email angel.campos.m@outlook.com instead of using the issue tracker.\n\n## Standards\n\nThe php package IPv4 Address Converter, comply with the next standards:\n\n- [PSR-1 - Basic Coding Standard](http://www.php-fig.org/psr/psr-1/)\n- [PSR-4 - Autoloading Standard](http://www.php-fig.org/psr/psr-4/)\n- [PSR-12 - Extended Coding Style Guide](https://www.php-fig.org/psr/psr-12/)\n\n## Credits\n\n- [Angel Campos](https://github.com/acamposm)\n\n## License\n\nThe MIT License (MIT). Please see [License File](LICENSE.md) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fangelcamposm%2Fsnmp-poller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fangelcamposm%2Fsnmp-poller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fangelcamposm%2Fsnmp-poller/lists"}