Hello , i have been trying to write a java code that implements get command . I am using snmpv3 and when i run my java code , it shows counter. Then with this command “$ sudo systemctl status snmpd” ,
i found out that , terminal displays this message “security service 3 error parsing ScopedPDU”
And my java code is this
import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.ScopedPDU;
import org.snmp4j.Snmp;
import org.snmp4j.TransportMapping;
import org.snmp4j.UserTarget;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.mp.MPv3;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.security.AuthMD5;
import org.snmp4j.security.PrivDES;
import org.snmp4j.security.SecurityLevel;
import org.snmp4j.security.SecurityModels;
import org.snmp4j.security.SecurityProtocols;
import org.snmp4j.security.TSM;
import org.snmp4j.security.USM;
import org.snmp4j.security.UsmUser;
import org.snmp4j.smi.Address;
import org.snmp4j.smi.GenericAddress;
import org.snmp4j.smi.Integer32;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultUdpTransportMapping;
public class SnmpV3Set {
public static void main(String[] args) throws Exception {
String Agent = "udp:localhost/161";
TransportMapping transport = new DefaultUdpTransportMapping();
Snmp snmp = new Snmp(transport);
OctetString localEngineId = new OctetString(MPv3.createLocalEngineID());
USM usm = new USM(SecurityProtocols.getInstance(), localEngineId, 0);
SecurityModels.getInstance().addSecurityModel(usm);
OctetString securityName = new OctetString("privUser");
OID authProtocol = AuthMD5.ID;
OID privProtocol = PrivDES.ID;
OctetString authPassphrase = new OctetString("AuthPassword");
OctetString privPassphrase = new OctetString("CryptoPassword");
snmp.getUSM().addUser(securityName, new UsmUser(securityName, authProtocol, authPassphrase, privProtocol, privPassphrase));
SecurityModels.getInstance().addSecurityModel(new TSM(localEngineId, false));
UserTarget target = new UserTarget();
target.setSecurityLevel(SecurityLevel.AUTH_PRIV);
target.setSecurityName(securityName);
//target.setAddress(GenericAddress.parse(String.format("udp:%s/%s", "your-target-ip", "your-port-number")));
Address targetAddress = GenericAddress.parse(Agent);
target.setAddress(targetAddress);
target.setVersion(SnmpConstants.version3);
target.setRetries(2);
target.setTimeout(60000);
transport.listen();
PDU pdu = new ScopedPDU();
pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.1.1.0")));
pdu.setType(PDU.GET);
ResponseEvent event = snmp.send(pdu, target);
if (event != null) {
pdu = event.getResponse();
if (pdu.getErrorStatus() == PDU.noError) {
System.out.println( event.getResponse().get(0).getVariable().toString());
} else {
System.out.println("SNMPv3 get Unsuccessful.");
}
} else {
System.out.println("SNMP get unsuccessful.");
}
}
}