Networking SNMP4J:SHA/AES-256与网元的通信失败-需要设置哪些所有参数?
我尝试使用下面的SNMP4JClinet代码与AES-256/SHAv3模式下的网元通信。它失败,出现下面指定的异常。请让我知道异常后面的代码有什么问题。当网元处于AES256/SHA模式时,是否需要在SNMP4J上设置附加参数 例外情况:Networking SNMP4J:SHA/AES-256与网元的通信失败-需要设置哪些所有参数?,networking,encryption,aes,sha,snmp4j,Networking,Encryption,Aes,Sha,Snmp4j,我尝试使用下面的SNMP4JClinet代码与AES-256/SHAv3模式下的网元通信。它失败,出现下面指定的异常。请让我知道异常后面的代码有什么问题。当网元处于AES256/SHA模式时,是否需要在SNMP4J上设置附加参数 例外情况: org.snmp4j.MessageException: Message processing model 3 returned error: 1405 at org.snmp4j.MessageDispatcherImpl.send
org.snmp4j.MessageException: Message processing model 3 returned error: 1405
at org.snmp4j.MessageDispatcherImpl.sendPdu(MessageDispatcherImpl.java:422)
at org.snmp4j.Snmp.sendMessage(Snmp.java:955)
at org.snmp4j.Snmp.send(Snmp.java:802)
at org.snmp4j.Snmp.send(Snmp.java:758)
at org.snmp4j.Snmp.getBulk(Snmp.java:571)
at SNMP4JClinet.main(SNMP4JClinet.java:88)
资料来源:
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.Snmp;
import org.snmp4j.UserTarget;
import org.snmp4j.security.AuthMD5;
import org.snmp4j.security.AuthSHA;
import org.snmp4j.security.PrivAES128;
import org.snmp4j.security.PrivAES256;
import org.snmp4j.security.SecurityLevel;
import org.snmp4j.security.SecurityModels;
import org.snmp4j.security.Sec;urityProtocols;
import org.snmp4j.security.USM;
import org.snmp4j.security.UsmUser;
import org.snmp4j.smi.*;
import org.snmp4j.mp.*;
import org.snmp4j.transport.DefaultUdpTransportMapping;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.*;
public class SNMP4JClinet
{
public static void main(String[] args) {
try {
Snmp snmp = new Snmp(new DefaultUdpTransportMapping());
USM usm = new USM(SecurityProtocols.getInstance(),
new OctetString(MPv3.createLocalEngineID()), 0);
SecurityModels.getInstance().addSecurityModel(usm);
snmp.listen();
List<String> ipAddresses = new ArrayList<String>();
ipAddresses.add("x.x.x.x");
List<UserTarget> target = new ArrayList<UserTarget>();
for (String ipAddress : ipAddresses) {
UserTarget userTarget = new UserTarget();
userTarget.setAddress(GenericAddress.parse("udp:"+ipAddress+"/161"));
userTarget.setSecurityName(new OctetString("v3userdeafult"));
userTarget.setVersion(SnmpConstants.version3);
userTarget.setSecurityLevel(SecurityLevel.AUTH_PRIV);
userTarget.setTimeout(10000);
userTarget.setRetries(0);
target.add(userTarget);
}
UsmUser user1 = new UsmUser(new OctetString("v3userdeafult"),
AuthSHA.ID,
new OctetString("v3authapass"),
PrivAES256.ID,
new OctetString("v3defprivpass"));
System.out.println(target.get(0).getAddress());
byte[] authEngineId0 =snmp.discoverAuthoritativeEngineID(target.get(0).getAddress(), 5000);
OctetString o1=new OctetString("v3DefaultUser");
OctetString o2 = new OctetString(authEngineId0);
snmp.getUSM().addUser(o1, o2,user1);
ResponseEvent responseEvent=null;
PDU responsePDU=null;
PDU pdu = new ScopedPDU();
pdu.setNonRepeaters(1);
pdu.setType(PDU.GETBULK);
pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.7483.2.1.1.2.1.4")));
responseEvent = snmp.getBulk(pdu, target.get(0));
if (responseEvent != null)
{
responsePDU = responseEvent.getResponse();
if ( responsePDU != null)
{
Vector <VariableBinding> tmpv = (Vector<VariableBinding>) responsePDU.getVariableBindings();
if(tmpv != null)
{
for(int k=0; k <tmpv.size();k++)
{
VariableBinding vb = (VariableBinding) tmpv.get(k);
String output = null;
if ( vb.isException())
{
String errorstring = vb.getVariable().getSyntaxString();
System.out.println("Error:"+errorstring);
}
else
{
String sOid = vb.getOid().toString();
Variable var = vb.getVariable();
//OctetString oct = new OctetString((OctetString)var);
String sVar = var.toString();
System.out.println("success:"+sVar);
}
}
}
}
}
}
catch (IOException e) {
e.printStackTrace();
}
}
}
你介意用更少的缩进来编辑这个吗?很难按原样阅读。我怀疑问题出在代码UsmUser user1=new UsmUsernew OctetStringv3userdeafult、AuthSHA.ID、new OctetStringv3authapass、privas256.ID的下面部分,新的OctetStringv3defprivpass;与AuthMD5和PrivAES128相同的代码适用于v3-AES128模式下的网元。但当我修改上述代码以在AES-256中与网元通信时,它失败了。我需要设置一些其他参数吗?我已经将SHA标记更改为Java,以获得最大曝光量。SHA标记有9个跟随者,Java此时有54.6K跟随者。作为奖励,该标记还将用于执行语法突出显示。感谢您更改格式