Я пытаюсь расширить snmp, чтобы вернуть номер данного процесса
Это инструмент, сохраненный в /usr/bin/count_proc.sh
#!/bin/bash
ps aux | awk '
BEGIN { c=0 }
/processname$/ { c=c+1 }
END { print $c }'
в моем snmpd.conf у меня есть следующая строка:
extend .1.3.6.1.4.1.8072.9999.1 count_proc /usr/bin/count_proc.sh
Однако я не могу получить результат этой команды с этим OID. Когда я запускаю snmp-запрос для этого OID, результат будет:
Value: (Snmp No Such object)
Если я запустил обход дерева snmp, я наконец кое-что увижу, но это странно ... «Next OID» - это имя моего инструмента, а не числовое.
OID: .1.3.6.1.4.1.8072.9999.1.2.1.2.9.99.111.117.110.116.95.102.119.100
Next OID: /usr/bin/count_proc.sh
Value: 1
И, наконец, я увижу ценность, на которую рассчитываю.
OID: .1.3.6.1.4.1.8072.9999.1.3.1.1.9.99.111.117.110.116.95.102.119.100
Value: 13
Но это не тот OID, который я ожидал запросить, чтобы найти результат. Я также найду вывод на нескольких других OID.
Это работает так, как задумано, или мне здесь не хватает чего-то важного?
Лично я использую extension без OID, например:
extend count_proc /usr/bin/count_proc.sh
OID, сгенерированный snmp, прост, результат:
NET-SNMP-EXTEND-MIB :: нсекстендоутпут1лине.«Count_proc»
OID:
1.3.6.1.4.1.8072.1.3.2.3.1.1.10.99.111.117.110.116.95.112.114.111.99
Пояснение:
10 : number of character in "count_proc"
99 : ASCII decimal value of 'c'
111 : ASCII decimal value of 'o'
117 : ASCII decimal value of 'u'
110 : ASCII decimal value of 'n'
116 : ASCII decimal value of 't'
95 : ASCII decimal value of '_'
112 : ASCII decimal value of 'p'
114 : ASCII decimal value of 'r'
111 : ASCII decimal value of 'o'
99 : ASCII decimal value of 'c'
Таким образом, вы можете легко получить OID программно.
Наверное Эта ссылка может помочь вам в "расширении" соглашения об именах