2011-01-25 152 views
0

使用NET-SNMP API和使用mib2c生成骨架代碼,是有可能支持表的延遲初始化?我的意思是,表格不會被初始化,直到它的任何成員被直接查詢。這樣做的原因是該成員的數據是從另一臺服務器獲得,我想能夠啓動snmpd守護進程,而不需要其他的服務器聯機/準備要求。我想可能是用虛擬數據初始化表格,當成員被查詢時會用真實值更新,但我不確定這是否是最好的方法。延遲初始化表

該表也只有一個行條目,因此使用mib2c.iterate.conf生成表迭代器和處理所有這一切似乎只是多餘。我想可能只是實現MIB中定義的序列,而不是實際的表格,但通常不是我在所見過的所有例子中都是這樣做的。我查看了/mibgroup/examples/delayed_instance.c,但這不是我正在尋找的。使用mib2c與mib2c.create-dataset.conf配置文件是我到得到這個工作輕鬆最接近,但這個配置文件假定數據是靜態的,而不是外部的(這兩者都是在我的情況並非如此),所以它不會工作。如果不容易,我可能只是實現序列而不是表格,但我希望有一個簡單的方法。提前致謝。

回答

1

iterator方法會工作得很好。它不會加載任何數據,直到它調用_first和_next例程。因此,在這些例程和_handler例程中,由您來請求來自遠程服務器的數據。實際上,默認情況下,它根本不會緩存數據,因此它會讓您在每次請求時都查詢遠程服務器。如果表中有大量數據,則速度可能會很慢,因此在這種情況下建議添加緩存以存儲N秒的數據。

+0

十分感謝,我得到了它的工作。最後一件事情是,它可以在桌面上直接使用snmpwalk或在桌面OID上直接使用snmptable,但在嘗試走完完整的MIB時不起作用。任何想法爲什麼會這樣? – Matt 2011-01-27 14:47:24