Я пытаюсь перенести команду snmpset на snmp4j, но получаю общую ошибку с кодом ошибки 5, которая мне мало что говорит.Тип переменной b (двоичный).В конце я рассмотрел все примеры источника SnmpRequest.java и обнаружил, что аргументы b преобразуются в OctetString следующим образом:
case 'b':
variable = OctetString.fromString(value, ' ', 2);
Когда я запускаю переменную toString, я получаю следующее для значений «0»и «1» соответственно: 00, 01
, когда я устанавливаю OID из командной строки, он возвращает 80 и 40.
jgaer@ljgaer2_~: snmpset -t 60 192.168.60.105 cwNetStgSvrWriteEnable.0 b 0
CW-NET-STG-SVR-MIB::cwNetStgSvrWriteEnable.0 = BITS: 80 hwWriteEn(0)
jgaer@ljgaer2_~: snmpset -t 60 192.168.60.105 cwNetStgSvrWriteEnable.0 b 1
CW-NET-STG-SVR-MIB::cwNetStgSvrWriteEnable.0 = BITS: 40 fsWriteEn(1)
Если я получаю OID в snmp4jи toString variableBindings в событии ответа я вижу следующее, когда OID установлен в 0 и 1 соответственно:
[1.3.6.1.4.1.27675.20.1.6.0 = 80]
[1.3.6.1.4.1.27675.20.1.6.0 = c0]
Когда я запускаю следующий фрагмент кода со значением «1», я получаюОбщая ошибка.
Object result = null;
PDU pdu = new ScopedPDU();
pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.27675.20.1.6.0"), OctetString.fromString("1", ' ', 2)));
pdu.setType(PDU.SET);
ResponseEvent event = snmp.send(pdu, userTarget);
if (event != null) {
pdu = event.getResponse();
if (pdu.getErrorStatus() == PDU.noError) {
LOG.debug("SNMPv3 SET Successful for " + oid + " ObjectType " + pdu.get(0).getVariable().getClass() + " value " +
pdu.get(0).getVariable() + ":" + pdu.getVariableBindings());
result = pdu.get(0).getVariable();
} else {
LOG.debug("SNMPv3 SET Unsuccessful. Error Code " + pdu.getErrorStatus() + " " + pdu.getErrorStatusText());
}
} else {
LOG.debug("SNMP send unsuccessful.");
}
return result;
output
SNMPv3 SET Unsuccessful. Error Code 5 General variable binding error
Если я запускаю его со значением «0», он запускается без ошибок, и объект обновляется на удаленном агенте, но возвращается значение переменной 00, а не 80.
[1.3.6.1.4.1.27675.20.1.6.0 = 00]
Я полностью сбит с толку насчет возвращаемых значений 80 и C0.Я не понял, как создать OctestString для двоичного файла 1.