SNMP рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрдХреВрд▓ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдирд╣реАрдВ рд╣реИ: MIB рдлрд╛рдЗрд▓реЗрдВ рдмрд╣реБрдд рд▓рдВрдмреА рдФрд░ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╣реЛрддреА рд╣реИрдВ, рдФрд░ OID рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрд╕рдПрдирдПрдордкреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, SNMP рд╕рд░реНрд╡рд░ API рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдЯреЛрдЯреЗрд╕реНрдЯ рд▓рд┐рдЦреЗрдВред
рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЗ рджреНрд╡рд╛рд░рд╛, рд╡рд┐рд╖рдп рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдмрдЬрд╛рдп рдЕрд▓реНрдк рд░рд╛рд╢рд┐ рдХреЗ рд╕рд╛рде, рд╣рдо рдЕрднреА рднреА рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЬрд╛рд╡рд╛ рдФрд░ рдПрд╕рдПрдирдПрдордкреА рдорд┐рддреНрд░ рдХреИрд╕реЗ рдмрдирд╛рдПрдВред
рд▓реЗрдЦреЛрдВ рдХреА рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдореИрдВ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдордЖрдИрдмреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдкрд╛рд░реНрд╕рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реЛрдЧрд╛ред рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рдореИрдВ рдПрдХ рдПрд╕рдПрдирдПрдордкреА рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред рддреАрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдПрдХ рд▓рд┐рдЦрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ: рдПрд╕рдПрдирдПрдордкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдЯреЛрдЯреЗрд╕реНрдЯред

рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐
рдпрд╣ рд╕рдм SNMP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдбрд┐рдпреЛ-рд╡реАрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдЯреЛрдЯреЗрд╕реНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖред рд╕реНрдерд┐рддрд┐ рдХреА рд╢рд┐рдХрд╛рдпрдд рдпрд╣ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрд╕рдПрдирдПрдордкреА рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдпрд╣ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рд░реВрд╕реА-рднрд╛рд╖рд╛ рдЦрдВрдб рдореЗрдВ рдЖрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдХреЛрдИ C # рдпрд╛ рдкрд╛рдпрдерди рдХреА рдУрд░ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди C # рдореЗрдВ, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ рдЬрд┐рддрдиреА рдЬрдЯрд┐рд▓ рд╣реИред рдЕрдЬрдЧрд░ рдореЗрдВ рдХреБрдЫ рдЕрдЪреНрдЫреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬрд╛рд╡рд╛ рдореЗрдВ рдЗрд╕ рдЙрдкрдХрд░рдг рдХреЗ рд░реАрд╕реНрдЯ рдПрдкреАрдЖрдИ рдСрдЯреЛрдЯреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреИрдпрд╛рд░ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рдерд╛ред
рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрдЪрд╛рд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ SNMP рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдСрдЯреЛрдЯреЗрд╕реНрдЯрд░ рдХреЛ рд╕реНрдХреЗрд▓рд░ рдФрд░ рдЯреЗрдмрд▓ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреАрдИрдЯреА рдФрд░ рдПрд╕рдИрдЯреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдлрд▓рддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдЕрднрд┐рд▓реЗрдЦреЛрдВ рдХреЗ рдЬреЛрдбрд╝ рдФрд░ рд╡рд┐рд▓реЛрдкрди рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдпрджрд┐ рддрд╛рд▓рд┐рдХрд╛ рд╕реНрд╡рдпрдВ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
рд▓реЗрдХрд┐рди рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ MIB рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рд░рдЦрдирд╛ рдкрдбрд╝рддрд╛ рдерд╛ред рдпрд╣ рд╡рд░реНрдЧ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░, рд╕реНрд╡реАрдХрд╛рд░реНрдп рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реАрдорд╛рдУрдВ рдЖрджрд┐ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП MIB рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рд╣рд╛рд░реНрдбрдХреЛрдб рди рд╣реЛ рдХрд┐ рд╣рдореЗрд╢рд╛ рдХреНрдпрд╛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред
рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп, рд╣рдореЗрдВ рдПрдХ рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЬреЛ рджреЛрдиреЛрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ рдПрдордЖрдИрдмреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдмрд╕ рдЧрдПред рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП, рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ org.snmp4j.snmp4j (https://www.snmp4j.org) рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдХрд╛рдлреА рддрд╛рд░реНрдХрд┐рдХ рд▓рдЧрддрд╛ рдерд╛, рдФрд░ MIB рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдкрд╛рд░реНрд╕рд░ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЪреБрдирд╛рд╡ рди рдЬрд╛рдиреЗ-рдорд╛рдиреЗ net.percederberg.mibble рд▓рд╛рдЗрдмреНрд░реЗрд░реА (https: // www) рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред mibble.org)ред рдЕрдЧрд░ snmp4j рдХреЗ рд╕рд╛рде рдЪреБрдирд╛рд╡ рд╕реНрдкрд╖реНрдЯ рдерд╛, рддреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рд╕реНрддреГрдд (рдпрджреНрдпрдкрд┐ рдЕрдВрдЧреНрд░реЗрдЬреА-рднрд╛рд╖рд╛) рдкреНрд░рд▓реЗрдЦрди рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдорд┐рдмрд▓ рдХреЛ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
MIB рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдкрд╛рд░реНрд╕рд░ рд▓рд┐рдЦрдирд╛
рд╣рд░ рдХреЛрдИ рдЬрд┐рд╕рдиреЗ рдХрднреА MIB рдлрд╛рдЗрд▓ рджреЗрдЦреА рд╣реИ, рд╡рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рджрд░реНрдж рд╣реИред рдЖрдЗрдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд╛рд░реНрд╕рд░ рдХреА рдорджрдж рд╕реЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдЬреЛ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЦреЛрдЬ рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдХрд░ рджреЗрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдЙрд╕реЗ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрдореА рдЖрдПрдЧреАред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ MIB рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ SNMP рдХреЗ рддрд╣рдд рдХрд┐рд╕реА рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдПрдХ SNMP рдХреНрд▓рд╛рдЗрдВрдЯ рдпрд╛ рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдЪрд╛рд▓рди рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реЛред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рддреИрдпрд╛рд░реА
рдЕрд╕реЗрдВрдмрд▓реА рдХреА рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рд╡реЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдРрдб net.percederberg.mibble рд▓рд╛рдЗрдмреНрд░реЗрд░реА (https://www.mibble.org) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП MIB рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧрд╛:
<dependency> <groupId>net.percederberg.mibble</groupId> <artifactId>mibble</artifactId> <version>2.9.3</version> </dependency>
рдЪреВрдВрдХрд┐ рдпрд╣ рдХреЗрдВрджреНрд░реАрдп рдорд╛рд╡реЗрди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЛ pom.xml рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
<repositories> <repository> <id>opennms</id> <name>OpenNMS</name> <url>http://repo.opennms.org/maven2/</url> </repository> </repositories>
рдпрджрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдорд╛рд╡реЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдкрд╛рд░реНрд╕рд░ рд╡рд░реНрдЧ (рдЪрд▓реЛ рдЗрд╕реЗ MIBParser рдХрд╣рддреЗ рд╣реИрдВ) рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рд╣рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЙрд╕реЗ рдЖрдпрд╛рдд рдХрд░реЗрдВ:
import net.percederberg.mibble.*;
MIB рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдорд╛рдиреНрдп рдХрд░реЗрдВ
рдХрдХреНрд╖рд╛ рдХреЗ рдЕрдВрджрд░ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝реАрд▓реНрдб рд╣реЛрдЧрд╛ - рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ MIB рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП net.percederberg.mibble.Mib рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рд╡рд╕реНрддреБ:
private Mib mib;
рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдпрд╣ рд╡рд┐рдзрд┐ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
private Mib loadMib(File file) throws MibLoaderException, IOException { MibLoader loader = new MibLoader(); Mib mib; file = file.getAbsoluteFile(); try { loader.addDir(file.getParentFile()); mib = loader.load(file); } catch (MibLoaderException e) { e.getLog().printTo(System.err); throw e; } catch (IOException e) { e.printStackTrace(); throw e; } return mib; }
Net.percederberg.mibble.MIBLoader рд╡рд░реНрдЧ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдорд╛рдиреНрдп рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдиреЗрдЯ рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдлреЗрдВрдХрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЭреВрда рдордд рдмреЛрд▓реЛ рдпрд╛ MIB рд╡рд░реНрдгреЛрдВ рдХреЛ рдЖрдпрд╛рдд рди рдХрд░реЗрдВред
рд▓реЛрдбрдорд┐рдм рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо рд╕рднреА рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЙрдЧ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЖрдЧреЗ рднреЗрдЬрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдХрд╛рдо рдХреА рдирд┐рд░рдВрддрд░рддрд╛ рдЕрд╕рдВрднрд╡ рд╣реИ - рдлрд╝рд╛рдЗрд▓ рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИред
рд╣рдо рдкрд╛рд░реНрд╕рд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВ:
public MIBParser(File file) throws MibLoaderException, IOException { if (!file.exists()) throw new FileNotFoundException("File not found in location: " + file.getAbsolutePath()); mib = loadMib(file.getAbsoluteFile()); if (!mib.isLoaded()) throw new MibLoaderException(file, "Not loaded."); }
рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдкрд╛рд░реНрд╕ рд╣реЛ рдЧрдИ рд╣реИ, рддреЛ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВред
рдПрдХ MIB рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ
Net.percederberg.mibble.Mib рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдХреНрд░рдорд╢рдГ getSymbol (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╛рдо) рдпрд╛ getSymbolByOid (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдУрдЖрдИрдбреА) рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдирд╛рдо рдпрд╛ OID рджреНрд╡рд╛рд░рд╛ MIB рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрдгреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпреЗ рд╡рд┐рдзрд┐рдпрд╛рдБ net.percederberg.mibble.MibSymbol рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд▓реМрдЯрд╛рддреА рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рддрд░реАрдХреЗ рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ MIB рдкреНрд░рддреАрдХ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдЖрдЗрдП рдЕрдкрдиреЗ рдУрдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддреАрдХ рдХрд╛ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд╛рдо рд╕реЗ рдУрдЖрдИрдбреА:
public String getName(String oid) { return mib.getSymbolByOid(oid).getName(); } public String getOid(String name) { String oid = null; MibSymbol s = mib.getSymbol(name); if (s instanceof MibValueSymbol) { oid = ((MibValueSymbol) s).getValue().toString(); if (((MibValueSymbol) s).isScalar()) oid = new OID(oid).append(0).toDottedString(); } return oid; }
рд╢рд╛рдпрдж рдпреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ MIB рдлрд╝рд╛рдЗрд▓ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдмрд┐рдирд╛ рд╢реВрдиреНрдп рдХреЗ рдЕрдВрдд рдореЗрдВ OID рдХреЛ рд╕реНрдХреЗрд▓рд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП OID рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рдХреЛрдб рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ, рдпрджрд┐ MIB рдпрд╣ рдЕрдХреНрд╖рд░ рдЕрджрд┐рд╢ рд╣реИ, рдпрд╣ net.percederberg.mibble.OID рд╡рд░реНрдЧ рд╕реЗ рдкрд░рд┐рд╢рд┐рд╖реНрдЯ (int рд╕реВрдЪрдХрд╛рдВрдХ) рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд OID рдореЗрдВ ".0" рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рдмреИрд╕рд╛рдЦреА рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдмрдзрд╛рдИ :)
рдкреНрд░рддреАрдХ рдкрд░ рд╢реЗрд╖ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдБ рд╣рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ net.percederberg.mibble.snmp.SnmpObjectType рдорд┐рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ MIB рдкреНрд░рддреАрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИред
private SnmpObjectType getSnmpObjectType(MibSymbol symbol) { if (symbol instanceof MibValueSymbol) { MibType type = ((MibValueSymbol) symbol).getType(); if (type instanceof SnmpObjectType) { return (SnmpObjectType) type; } } return null; }
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо MIB рдкреНрд░рддреАрдХ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
public String getType(String name) { MibSymbol s = mib.getSymbol(name); if (getSnmpObjectType(s).getSyntax().getReferenceSymbol() == null) return getSnmpObjectType(s).getSyntax().getName(); else return getSnmpObjectType(s).getSyntax().getReferenceSymbol().getName(); }
рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ 2 рддрд░реАрдХреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
getSnmpObjectType(s).getSyntax().getName();
рдФрд░ рдЖрдпрд╛рддрд┐рдд рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛:
getSnmpObjectType(s).getSyntax().getReferenceSymbol().getName();
рдЖрдк рдПрдХ рдЪрд░рд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
public String getAccess(String name) { MibSymbol s = mib.getSymbol(name); return getSnmpObjectType(s).getAccess().toString(); }
рд╕рд╛рдВрдЦреНрдпрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдорд╛рдиреНрдп рдореВрд▓реНрдп:
public Integer getDigitMinValue(String name) { MibSymbol s = mib.getSymbol(name); String syntax = getSnmpObjectType(s).getSyntax().toString(); if (syntax.contains("STRING")) return null; Pattern p = Pattern.compile("(-?\\d+)..(-?\\d+)"); Matcher m = p.matcher(syntax); if (m.find()) { return Integer.parseInt(m.group(1)); } return null; }
рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЕрдзрд┐рдХрддрдо рдЕрдиреБрдордд рдореВрд▓реНрдп:
public Integer getDigitMaxValue(String name) { MibSymbol s = mib.getSymbol(name); String syntax = getSnmpObjectType(s).getSyntax().toString(); if (syntax.contains("STRING")) return null; Pattern p = Pattern.compile("(-?\\d+)..(-?\\d+)"); Matcher m = p.matcher(syntax); if (m.find()) { return Integer.parseInt(m.group(2)); } return null; }
рдиреНрдпреВрдирддрдо рдЕрдиреБрдордд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рдВрдмрд╛рдИ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ):
public Integer getStringMinLength(String name) { MibSymbol s = this.mib.getSymbol(name); String syntax = this.getSnmpObjectType(s).getSyntax().toString(); Pattern p = Pattern.compile("(-?\\d+)..(-?\\d+)"); Matcher m = p.matcher(syntax); return syntax.contains("STRING") && m.find()?Integer.valueOf(Integer.parseInt(m.group(1))):null; }
рдЕрдзрд┐рдХрддрдо рдЕрдиреБрдордд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рдВрдмрд╛рдИ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ):
public Integer getStringMaxLength(String name) { MibSymbol s = mib.getSymbol(name); String syntax = getSnmpObjectType(s).getSyntax().toString(); Pattern p = Pattern.compile("(-?\\d+)..(-?\\d+)"); Matcher m = p.matcher(syntax); if (syntax.contains("STRING") && m.find()) { return Integer.parseInt(m.group(2)); } return null; }
рдЖрдк рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рднреА рд╕реНрддрдВрднреЛрдВ рдХреЗ рдирд╛рдо рдЗрд╕рдХреЗ рдирд╛рдо рд╕реЗ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
public ArrayList<String> getTableColumnNames(String tableName) { ArrayList<String> mibSymbolNamesList = new ArrayList<>(); MibValueSymbol table = (MibValueSymbol) mib.findSymbol(tableName, true); if (table.isTable() && table.getChild(0).isTableRow()) { MibValueSymbol[] symbols = table.getChild(0).getChildren(); for (MibValueSymbol mvs : symbols) { mibSymbolNamesList.add(mvs.getName()); } } return mibSymbolNamesList; }
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдорд╛рдирдХ рддрд░реАрдХреЗ рд╕реЗ, рд╣рдореЗрдВ рдирд╛рдо рд╕реЗ рдПрдХ MIB рдкреНрд░рддреАрдХ рдорд┐рд▓рддрд╛ рд╣реИ:
MibValueSymbol table = (MibValueSymbol) mib.findSymbol(tableName, true);
рдлрд┐рд░ рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд┐ рдмрдЪреНрдЪрд╛ MIB рдкреНрд░рддреАрдХ рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИ рдФрд░, рдпрджрд┐ рд╕реНрдерд┐рддрд┐ рд╕рд╣реА рд╣реИ, рддреЛ рд▓реВрдк рдореЗрдВ рд╣рдо рддрд╛рд▓рд┐рдХрд╛ рдкрдВрдХреНрддрд┐ рдХреЗ рдмрдЪреНрдЪреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдореА рд╕рд░рдгреА рдореЗрдВ рддрддреНрд╡ рдХрд╛ рдирд╛рдо рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
if (table.isTable() && table.getChild(0).isTableRow()) { MibValueSymbol[] symbols = table.getChild(0).getChildren(); for (MibValueSymbol mvs : symbols) { mibSymbolNamesList.add(mvs.getName()); } }
рдкрд░рд┐рдгрд╛рдо
рдпреЗ рддрд░реАрдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдг рдХреЗ рд▓рд┐рдП MIB рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХрд┐рд╕реА рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ, рдХреЗрд╡рд▓ рдЙрд╕рдХрд╛ рдирд╛рдо рдЬрд╛рдирддреЗ рд╣реБрдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрд╕рдПрдирдПрдордкреА рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд┐рдЦрддреЗ рд╕рдордп, рдЖрдк рдЗрд╕рдореЗрдВ рдРрд╕реЗ рдкрд╛рд░реНрд╕рд░ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рддрд░реАрдХреЗ рдУрдЖрдИрдбреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдПрдордЖрдИрдмреА рдкреНрд░рддреАрдХ рдирд╛рдореЛрдВ рдХреЛред рдЗрд╕рд╕реЗ, рдХреЛрдб рдХреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдмрдврд╝ рдЬрд╛рдПрдЧреА рдУрдЖрдИрдбреА рдореЗрдВ рдПрдХ рдЯрд╛рдЗрдкреЛ рдЙрд╕ рдЪрд░рд┐рддреНрд░ рдХреЛ рдЬрдиреНрдо рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдФрд░ рдХреЛрдИ рдУрдЖрдИрдбреА рдирд╣реАрдВ - рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВред
рдкреНрд▓рд╕ рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдЗрд╕рдХреА рд╕реНрдерд┐рд░рддрд╛ред рдпрджрд┐ рдХреЛрдб рдорд╛рдирд╡ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рд░ рдХреЛ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИред
рдПрдХ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдЪрд╛рд▓рди рд╣реИред рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдореЗрдВ, рдХреЛрдИ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ MIB рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕реАрдорд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдШрдЯрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреБрдЫ MIB рдкреНрд░рддреАрдХреЛрдВ рдХреЗ рд╕реАрдорд╛ рдореВрд▓реНрдп, рдЖрдкрдХреЛ рдСрдЯреЛрдЯреЗрдХреНрд╕реНрдЯ рдХреЛрдб рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдПрдордЖрдИрдмреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрдЦрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╡реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рджрд░реНрдж рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВред