2011-12-18 26 views
5

Tôi đã cố gắng để hiểu làm thế nào để tạo ra một MIB: ở đây những gì tôi đã làm như vậy cho đến nay:snmpset Đối tượng không thể ghi. Tại sao?

Tôi tạo ra một MIB, và cố gắng phân bổ giá trị OID mới => thất bại

Đây là MIB:

TEST-MIB DEFINITIONS ::= BEGIN 

IMPORTS 
MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF 
OBJECT-TYPE, Integer32,MODULE-IDENTITY FROM SNMPv2-SMI; 




test MODULE-IDENTITY 
    LAST-UPDATED "201112190200Z" 
    ORGANIZATION "blah" 
    CONTACT-INFO 
     "please"   
    DESCRIPTION 
     "I am stuck" 
    REVISION "201112190200Z" 
    DESCRIPTION 
     "initial Draft" 
    ::= { iso org(3) dod(6) internet(1) private(4) enterprises(1) 39106 } 

testResearch    OBJECT IDENTIFIER ::= { test 2 } 

testVar OBJECT-TYPE 
    SYNTAX Integer32 
    MAX-ACCESS read-write 
    STATUS current 
    DESCRIPTION 
     "just for testing" 
    ::= { testResearch 1} 

-- conformance information 

testMIBConformance OBJECT IDENTIFIER ::= { test 999 } 
testMIBCompliances OBJECT IDENTIFIER ::= { testMIBConformance 1 } 
testMIBGroups  OBJECT IDENTIFIER ::= { testMIBConformance 2 } 

-- compliance statements 

testMIBCompliance MODULE-COMPLIANCE 
    STATUS current 
    DESCRIPTION 
     "blah." 
    MODULE -- this module 
    MANDATORY-GROUPS { testGroup } 
    ::= { testMIBCompliances 1 } 

-- units of conformance 

testGroup OBJECT-GROUP 
    OBJECTS { testVar } 
    STATUS current 
    DESCRIPTION 
     "The draft" 
    ::= { testMIBGroups 1 } 

END 

sau đó tôi

  • xác nhận MIB này chống lại smilint,
  • đặt nó trong ~/.snmp/MIB/
  • có chuỗi rwcommunity cho tất cả các máy chủ, không có hạn chế OID
  • khởi động lại daemon snmpd (Trên Debian)

Cho đến nay, tất cả đều tốt.

sau đó tôi đã cố gắng để xem nếu daemon biết về doanh nghiệp mới này, và tôi đã làm:

snmpwalk -v2c -m +ALL localhost .1.3.6.1.4.1.39106 

mà kết quả đầu ra: TEST-MIB :: test = Không Object này có sẵn trên đại lý này tại OID này

Vì vậy, tôi đoán rằng Snmpd đang nói với tôi rằng anh ta không thể tìm thấy bất cứ điều gì dưới gốc cây này, bởi vì chưa có gì được thiết lập.

Vì vậy, tôi cố gắng thiết lập biến thử nghiệm này với snmpset trên vỏ:

snmpset -v2c -m +ALL localhost .1.3.6.1.4.1.39106.2.1 i 111 

kết quả đầu ra:

Error in packet. 
Reason: notWritable (That object does not support modification) 
Failed object: TEST-MIB::testVar 

tôi đã cố gắng cũng như với: snmpset -v2c -m + ALL localhost. 1.3.6.1.4.1.39106.2.1.0 i 111

và làm gốc, nhưng không thành công

Nhưng khi tôi làm một snmptranslate, tôi có thể thấy rằng MIB được phân tích cú pháp chính xác:

snmptranslate -Td 1.3.6.1.4.1.39106.2.1 
    TEST-MIB::testVar 
    testVar OBJECT-TYPE 
     -- FROM TEST-MIB 
     SYNTAX Integer32 
     MAX-ACCESS read-write 
     STATUS current 
     DESCRIPTION "just for testing" 
    ::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) test(39106) testResearch(2) 1 } 

là một lỗi? Một vấn đề đã biết?

+1

Sau khi trải qua một giờ đọc bài ALL liên quan trên stack overflow (13 trang, yehaoo), tôi nhận ra rằng tôi có thể phải sử dụng mib2c để biến mib của tôi thành mã c, và sau đó, biên dịch lại netsmtpd bằng thư viện này. Tôi có cần phải viết bất kỳ mã C nào để làm điều đó không? Tôi không phải là một C-noob, tôi là một tổng số dốt nát về tất cả mọi thứ liên quan đến C ....: ( – Ant

Trả lời

3

Có vẻ như bạn đang cố gắng xây dựng Đại lý SNMP của riêng mình.

Bằng giao diện của những thứ bạn đã tạo chính xác MIB OID của riêng bạn nhưng không có gì phản hồi OID mới khi bạn truy vấn máy chủ SNMP.

Có một chi về điều này: http://docs.oracle.com/cd/E13192_01/manager/mgr20/pguide/buildag.htm và xem nếu nó giải quyết vấn đề của bạn q :)

+0

Nếu tôi hiểu rõ, NET-SNMP không alloow để cập nhật cây MIB trên bay. Tôi phải viết một số Mã C để có thể ghi vào một OID mới. – Ant

+1

Tôi tin rằng có một bó toàn bộ các mô-đun Perl trên CPAN có thể giúp đỡ nếu bạn gặp khó khăn khi viết mã trong C! Hãy thử http://search.cpan.org/~aelse/SNMP-Agent-0.05/lib/SNMP/Agent.pm – Encoder

+0

Tôi sẽ đi với perl rồi :) – Ant

Các vấn đề liên quan