SNMP, 특히 PHP의 SNMP를 처리해야 한다면 OID 매핑에 대한 정확한 이름이 얼마나 중요한지 알고 계실 것입니다. 이 라이브러리는 이를 제공하며 SNMP 라이브러리 ( Net-SNMP
)를 PHP에 더 많이 노출시킵니다!
당신이 SNMP를 싫어했다면 이 라이브러리가 당신이 그만 두도록 설득할 수 있기를 바랍니다 ;)
SNMP는 호스트 간 정보 교환을 허용하는 네트워킹 프로토콜로, 1990년대의 REST와 비슷하다고 생각하면 됩니다. 프로토콜은 확실히 오래되었지만 여전히 모든 곳에서 사용되고 있으므로 거의 모든 네트워크 지원 하드웨어에서 사용할 수 있습니다.
요즘 SNMP는 주로 메트릭(예: WiFi 액세스 포인트에 연결된 장치 목록 또는 서버의 여유 디스크 공간)을 가져오는 데 사용됩니다. 그러나 아무도 이것이 커피 포트를 제어하는 데 사용할 수 없다고 말하지 않았습니다!
MIB( 관리 정보 베이스 )는 원격 시스템에 있는 데이터에 대한 설명이 포함된 텍스트 파일 모음입니다. 이러한 파일이 없으면 대부분의 정보는 의미 없는 숫자와 문자열 집합일 뿐입니다. 더 나쁜 것은 MIB가 없으면 sysUpTime.0
요청할 수 없지만 1.3.6.1.2.1.1.3.0
요청할 수 있다는 것입니다.
원격 SNMP 호스트를 호출하는 시스템에 설치된 MIB를 사용하면 데이터에 대한 간단한 쿼리 및 검증이 가능합니다. 또한 원격 시스템에서 요청할 수 있는 내용을 정확하게 설명합니다.
거의 모든 *nix 시스템에는 Net-SNMP
라이브러리 및 도구가 함께 제공됩니다. 예를 들어 Synology NAS에 설치된 디스크를 설명하는 구조를 보려면 단일 명령을 사용하여 멋진 트리를 인쇄할 수 있습니다.
% 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)
그러나 해당 트리에 표시된 모든 정보에 프로그래밍 방식으로 액세스할 수는 없습니다(그리고 이를 구문 분석하는 것은 깨지기 쉬운 악몽입니다).
Net-SNMP
필요한 모든 것을 제공하며 SNMP 상호 작용 및 MIB 구문 분석을 위한 라이브러리 입니다. 불행히도 C
로 작성되었으며 PHP 바인딩이 없습니다. MIB 표준은 약 35년 동안 활발히 개발 중이기 때문에 Net-SNMP
외에 완전히 호환되는 옵션은 거의 없습니다.
Net-SNMP
사용할 수 없나요?! 예! PHP 7.4부터 FFI 덕분에 가능합니다. 많은 곳에 고대 C 마법이 존재하기 때문에 쉽지는 않지만 가능합니다.
이 라이브러리는 멋진 객체 지향 인터페이스 뒤에 복잡성을 숨깁니다.
(위의 예는
examples
디렉토리에 포함되어 있습니다)
libnetsnmp
릴리스 버전snmptranslate
와 같은 모든 도구( /usr/lib/libnetsnmp.25.dylib
)가 함께 제공됩니다.snmp
) 라이브러리 자체는 MIT 라이센스를 받았습니다. 그러나 코드는 Net-SNMP의 일부를 사용하고 포함합니다. 코드 소스 트리에는 Net-SNMP 헤더 파일의 일부와 C에서 PHP로 변환된 구조(예: 상수)가 포함되어 있습니다.
NET-SNMP 라이센스에 대한 자세한 내용은 LICENSE-NETSNMP를 참조하십시오.
저는 변호사는 아니지만 이 자료는 무료이며 오픈 소스이므로 사용할 수 있습니다. 공정하게 플레이하고 라이선스를 포함하세요. ;)