Se você já precisou lidar com SNMP, e especialmente com SNMP em PHP, você sabe como são importantes os nomes precisos para os mapeamentos OID. Esta biblioteca oferece isso e muito mais expondo a biblioteca SNMP - Net-SNMP
- ao PHP!
Se você odiou o SNMP, espero que esta biblioteca possa convencê-lo a parar;)
SNMP é um protocolo de rede que permite a troca de informações entre hosts, pense nisso como um REST da década de 1990. Embora o protocolo esteja certamente desatualizado, ele ainda é usado em todos os lugares... e, portanto, está disponível em quase todos os hardwares habilitados para rede.
Hoje em dia o SNMP é usado principalmente para obter métricas (por exemplo, lista de dispositivos conectados a um ponto de acesso WiFi ou espaço livre em disco em um servidor)... mas ninguém disse que ele não pode ser usado para controlar sua cafeteira!
MIB, ou base de informações de gerenciamento , é uma coleção de arquivos textuais contendo descrição dos dados presentes em um sistema remoto. Sem esses arquivos, a maior parte das informações é apenas um conjunto sem sentido de números e strings. Pior ainda, sem MIBs você não pode solicitar sysUpTime.0
, mas 1.3.6.1.2.1.1.3.0
... caramba!
MIBs instalados em um sistema que chama um host SNMP remoto permitem consulta e validação simples dos dados. Eles também descrevem exatamente O QUE pode ser solicitado do sistema remoto.
Quase todo sistema *nix vem com biblioteca Net-SNMP
e ferramentas para isso. Por exemplo, para ver a estrutura que descreve os discos instalados em um Synology NAS, você pode usar um único comando para imprimir uma bela árvore:
% snmptranslate -Tp 'SYNOLOGY-DISK-MIB::diskTable'
+--diskTable(1)
|
+--diskEntry(1)
| Index: diskIndex, diskStatus
|
+-- ---- Integer32 diskIndex(1)
| Range: 0..2147483647
+-- -R-- String diskID(2)
+-- -R-- String diskModel(3)
+-- -R-- String diskType(4)
+-- -R-- Integer32 diskStatus(5)
| Range: 1..5
+-- -R-- Integer32 diskTemperature(6)
No entanto, não há acesso programático a todas as informações apresentadas nessa árvore (e analisá-las é um pesadelo frágil).
Net-SNMP
fornece tudo o que é necessário e é a biblioteca para interações SNMP e análise MIB. Infelizmente, está escrito em C
e não possui ligação PHP. Como o padrão MIB está em desenvolvimento ativo há quase 35 anos, praticamente não há opções totalmente compatíveis além do Net-SNMP
.
Net-SNMP
em PHP?! Sim! Desde o PHP 7.4 isso é possível graças ao FFI. Não é fácil, devido a uma tonelada de magia C antiga presente em muitos lugares, mas possível.
Esta biblioteca esconde a complexidade por trás de uma bela interface orientada a objetos.
(o exemplo acima está incluído no diretório examples
)
libnetsnmp
/usr/lib/libnetsnmp.25.dylib
), bem como todas as ferramentas como snmptranslate
snmp
) A biblioteca em si é licenciada pelo MIT. No entanto, o código usa e inclui partes do Net-SNMP. A árvore de código-fonte contém partes dos arquivos de cabeçalho do Net-SNMP, bem como estruturas (por exemplo, constantes) traduzidas de C para PHP.
Para obter detalhes sobre o licenciamento NET-SNMP, consulte LICENSE-NETSNMP.
Não sou advogado, mas esse material é gratuito e de código aberto e você pode usá-lo - basta jogar limpo e incluir as licenças;)