Привет, я пытаюсь передать ipAdresses
, которые находятся в файле функции SNMP, которая будет выполнять операцию GET. Я читаю файл строки за строкой и передавая данные. Но я получаю сообщение об ошибке setAddress
, программа работает нормально, если я не перехожу из файла. См. В коде 1-я строка прокомментировала ipAddress;Передача данных файла в функцию
Код:
package com.snmp.discovery;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream.GetField;
import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.Snmp;
import org.snmp4j.TransportMapping;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.smi.Integer32;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.UdpAddress;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultUdpTransportMapping;
public class Discover1 {
private static String port = "8001";
// OID of MIB CISCO-MGMT-MDM; Scalar Object = .iso.org.dod.internet.mgmt.mib-2.system.sysDescr.0
private static String oidValue = ".1.3.6.1.2.1.1.5.0"; // ends with 0 for scalar object
private static int snmpVersion = SnmpConstants.version1;
private static String community = "public";
public static void main(String[] args) {
try {
// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream("textfile.txt");
// Get the object of DataInputStream
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
//Read File Line By Line
while ((strLine = br.readLine()) != null) {
// Print the content on the console
Discover1.getDevice(strLine);
}
//Close the input stream
in.close();
}catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
}
public static void getDevice(String a) throws Exception {
System.out.println("SNMP GET Demo");
System.out.println(a);
// Create TransportMapping and Listen
TransportMapping transport = new DefaultUdpTransportMapping();
transport.listen();
// Create Target Address object
CommunityTarget comtarget = new CommunityTarget();
comtarget.setCommunity(new OctetString(community));
comtarget.setVersion(snmpVersion);
comtarget.setAddress(new UdpAddress(a+"/"+port));
System.out.println("------------");
comtarget.setRetries(2);
comtarget.setTimeout(1000);
// Create the PDU object
PDU pdu = new PDU();
pdu.add(new VariableBinding(new OID(oidValue)));
pdu.setType(PDU.GET);
pdu.setRequestID(new Integer32(1));
// Create Snmp object for sending data to Agent
Snmp snmp = new Snmp(transport);
System.out.println("Sending Request to Agent...");
ResponseEvent response = snmp.get(pdu, comtarget);
if (response != null){
System.out.println("Got Response from Agent");
PDU responsePDU = response.getResponse();
if (responsePDU != null){
int errorStatus = responsePDU.getErrorStatus();
int errorIndex = responsePDU.getErrorIndex();
String errorStatusText = responsePDU.getErrorStatusText();
if (errorStatus == PDU.noError){
System.out.println("Snmp Get Response = " + responsePDU.getVariableBindings());
} else {
System.out.println("Error: Request Failed");
System.out.println("Error Status = " + errorStatus);
System.out.println("Error Index = " + errorIndex);
System.out.println("Error Status Text = " + errorStatusText);
}
} else {
System.out.println("Error: Response PDU is null");
}
} else {
System.out.println("Error: Agent Timeout... ");
}
snmp.close();
}
}
Проблема заключается в вашей уловке. Не перехватывайте ВСЕ исключения. Собственно посмотрите и посмотрите, какие из них могут быть брошены вашими методами и поймать те конкретные исключения. Затем, когда кто-то бросается, это менее расстраивает попытку увидеть, что wtf происходит. –
Я отредактировал вышеуказанный код, пожалуйста, проверьте; Но все равно такая же ошибка – Rakesh
Не так могу сказать. У вашего основного метода все еще есть блок catch try, который захватывает все исключения, и ваш метод по-прежнему бросает исключение. Пока вы не исправите это, вы не сможете сказать, в чем проблема. Кроме того, существует трассировка стека из исключаемого исключения, которое я предполагаю, эта информация будет полезна. –