2011-01-25 7 views
0

net-snmp API를 사용하고 mib2c를 사용하여 스켈레톤 코드를 생성하면 지연된 테이블 초기화를 지원할 수 있습니까? 나가 의미하는 것은, 그것의 일원의 어떤이 직접적으로 질문 될 때까지 테이블은 초기화되지 않을 것이라는 점입니다. 그 이유는 구성원 데이터가 다른 서버에서 가져온 것이므로 다른 서버가 온라인/요청 준비가 필요하지 않고 snmpd 데몬을 시작할 수 있기를 바랍니다. 아마도 멤버가 쿼리 될 때 실제 값으로 업데이트되는 더미 데이터를 사용하여 테이블을 초기화하는 것이 좋겠지 만 이것이 최선의 방법인지 확실하지 않습니다.지연 테이블 초기화

표에는 또한 항목이 하나만 있으므로 mib2c.iterate.conf를 사용하여 표 반복자를 생성하고 모든 것을 처리하는 것은 불필요한 것처럼 보입니다. 아마 MIB에 정의 된 시퀀스를 구현하고 실제로 테이블을 구현할 생각은 없지만 일반적으로 내가 본 모든 예제에서 어떻게 완료되었는지는 알 수 없습니다. 나는 /mibgroup/examples/delayed_instance.c를 보았다. 그러나 그것은 내가 찾고있는 것이 아니다. mib2c.create-dataset.conf 설정 파일과 함께 mib2c를 사용하면 가장 쉽게이 작업을 수행 할 수 있습니다. 그러나이 설정 파일은 데이터가 정적이고 외부가 아니라는 것을 전제로합니다 (두 경우 모두 내 경우에는 맞지 않습니다). 그것은 작동하지 않습니다. 쉬운 일이 아니라면, 아마도 테이블이 아닌 시퀀스를 구현할 것입니다.하지만 쉬운 방법이 있기를 바랍니다. 미리 감사드립니다.

답변

1

iterator 메소드는 정상적으로 작동합니다. _first 및 _next 루틴을 호출하기 전에는 데이터를로드하지 않습니다. 따라서 루틴과 _handler 루틴에서 원격 서버의 데이터를 요청하는 것은 사용자에게 달려 있습니다. 실제로 기본적으로 데이터를 전혀 캐시하지 않으므로 모든 요청에 ​​대해 원격 서버를 쿼리 할 수 ​​있습니다. 테이블에 많은 양의 데이터가있는 경우 속도가 느릴 수 있으므로이 경우 N 초 동안 데이터를 저장할 캐시를 추가하는 것이 좋습니다.

+0

대단히 감사합니다. 마지막으로 테이블에서 snmpwalk를 사용하거나 테이블 OID에서 직접 snmptable을 사용할 때 작동하지만 전체 MIB를 처리하려고하면 작동하지 않습니다. 그게 왜 일어날까요? – Matt

+0

일반적으로 들어오는 요청 oid는 테이블보다 먼저 * 시작하고 올바르게 처리되지 않기 때문입니다. IE의 경우 mib 코드는 테이블이 .1.3.100 인 경우에도 .1.3.1의 GETNEXT를 처리 할 수 ​​있어야합니다. –