Get printer status using SNMP OID

I am working with SNMP on Android. I want to get printer status. I am using Snmp4Android.jar and OID 1.3.6.1.2.1.25.3.5.1.1 . See Link Printer Status .

SnmpActivity.java here

public class SnmpActivity extends Activity { private static String ipAddress = "PrinterIP"; private static String port = "Port"; private static String oidValue = "1.3.6.1.2.1.25.3.5.1.1"; public static Snmp snmp; public static CommunityTarget comtarget; static PDU pdu; static OID oid; static VariableBinding req; Button b; private static final String tag = "SNMP CLIENT"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); System.setProperty("java.net.preferIPv4Stack", "true"); System.setProperty("java.net.preferIPv6Addresses", "false"); b = (Button) findViewById(R.id.buttonClick); b.setOnClickListener(new OnClickListener() { public void onClick(View v) { try { sendSnmpRequest(oidValue); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }); } private void sendSnmpRequest(String oid) throws Exception { ResponseEvent response; OctetString community1 = new OctetString("public"); String host = ipAddress + "/" + port; Address tHost = new UdpAddress(host); TransportMapping transport = new DefaultUdpTransportMapping(); transport.listen(); CommunityTarget comtarget = new CommunityTarget(); comtarget.setCommunity(community1); comtarget.setVersion(SnmpConstants.version1); comtarget.setAddress(tHost); comtarget.setRetries(2); comtarget.setTimeout(5000); PDU pdu = new PDU(); pdu.add(new VariableBinding(new OID(oid))); pdu.setType(PDU.GET); snmp = new Snmp(transport); response = snmp.get(pdu, comtarget); if (response != null) { Log.i(tag, "Got Response from Agent " + response.getResponse().toString()); PDU responsePDU = response.getResponse(); if (responsePDU != null) { int errorStatus = responsePDU.getErrorStatus(); int errorIndex = responsePDU.getErrorIndex(); String errorStatusText = responsePDU.getErrorStatusText(); if (errorStatus == PDU.noError) { Log.i(tag, "Snmp Get Response = " + responsePDU.getVariableBindings()); Toast.makeText( getApplicationContext(), "Snmp Get Response = " + responsePDU.getErrorStatusText(), Toast.LENGTH_LONG).show(); System.out .println("--" + responsePDU.getVariableBindings()); } else { Log.i((String) tag, "Error: Request Failed"); Log.i(tag, "Error Status = " + errorStatus); Log.i(tag, "Error Index = " + errorIndex); Log.i(tag, "Error Status Text = " + errorStatusText); } } else { Log.i(tag, "Error: Response PDU is null"); } } else { Log.i(tag, "Error: Agent Timeout... "); } snmp.close(); } 

Thanks...

0
source share
1 answer

Use net-snmp or another available MIB browser (e.g. iReasoning). You can find out that there is no data in hrPrinterTable (OID.1.3.6.1.2.1.25.3.5).

If there are multiple lines, change the OID value to 1.3.6.1.2.1.25.3.5.1.1.1 (add 1 to the end). This is the correct OID for hrPrinterStatus in the first line.

+2
source

All Articles