2011-12-18 12 views
5

staram się zrozumieć, jak stworzyć MIB: oto co zrobiłem do tej pory:snmpset Obiekt nie jest zapisywalny. Czemu?

stworzyłem MIB i próbował przydzielić wartości do nowego OID => nie

Oto 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 

potem

  • zatwierdził MIB przed smilint,
  • umieścić go w ~/.snmp/MIB/
  • mieć ciąg rwcommunity dla wszystkich przyjmujących, bez ograniczeń OID
  • wznowiona demona snmpd (na Debianie)

Jak dotąd, wszystko dobrze.

Potem próbował sprawdzić, czy demon wie o tym nowym przedsiębiorstwie, i zrobiłem:

snmpwalk -v2c -m +ALL localhost .1.3.6.1.4.1.39106 

która wyprowadza: TEST-MIB :: test = ma takiego obiektu dostępne na tego środka w tym OID

Sądzę, że Snmpd mówi mi, że nie może znaleźć niczego pod tym drzewem, ponieważ nic nie zostało jeszcze ustalone.

Więc staram się ustawić tę zmienną testową snmpset na muszli:

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

wyjścia:

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

Próbowałem również z: snmpset -v2c -m + ALL localhost. 1.3.6.1.4.1.39106.2.1.0 i 111

i jako root, ale bez powodzenia

Ale kiedy zrobić snmptranslate, widzę, że MIB jest analizowany poprawnie:

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 } 

jest to błąd? Znany problem?

+1

Spędziwszy godzinę przeczytaniu wszystkich powiązanych post na przepełnienie stosu (13 stron, yehaoo), zdałem sobie sprawę, że może użyć mib2c przekształcić mój mib na kod c, a następnie ponownie skompilować netsmtpd z tymi bibliotekami. Czy muszę napisać jakikolwiek kod C, aby to zrobić? Nie jestem C-noobem, jestem totalnie nieświadomy wszystkiego, co dotyczy C .... :( – Ant

Odpowiedz

3

Wygląda na to, że próbujesz zbudować własnego agenta SNMP.

Wygląda na to, że utworzyłeś swój własny identyfikator MIB OID, ale nic nie reaguje na nowy OID podczas wysyłania zapytania do hosta SNMP.

Mają lektury to: http://docs.oracle.com/cd/E13192_01/manager/mgr20/pguide/buildag.htm i sprawdzić, czy to rozwiązuje Twój problem q :)

+0

Jeśli dobrze rozumiem, NET-SNMP nie pozwala na aktualizację drzewa MIB w locie. Kod C, aby móc pisać do nowego OID. – Ant

+1

Wierzę, że istnieje cały szereg modułów Perla na CPAN, które mogą pomóc, jeśli masz problemy z napisaniem kodu w C! Wypróbuj http://search.cpan.org/~aelse/SNMP-Agent-0.05/lib/SNMP/Agent.pm – Encoder

+0

Idę z perłem wtedy :) – Ant

Powiązane problemy