📄 java.txt
字号:
request.setNonRepeaters(0);
OID rootOID = request.get(0).getOid();
PDU response = null;
int objects = 0;
int requests = 0;
long startTime = System.currentTimeMillis();
do {
requests++;
ResponseEvent responseEvent = snmp.send(request, target);
response = responseEvent.getResponse();
if (response != null) {
objects += response.size();
}
}
while (!processWalk(response, request, rootOID));
System.out.println();
System.out.println("Total requests sent: "+requests);
System.out.println("Total objects received: "+objects);
System.out.println("Total walk time: "+
(System.currentTimeMillis()-startTime)+" milliseconds");
return response;
}
private static boolean processWalk(PDU response, PDU request, OID rootOID) {
if ((response == null) || (response.getErrorStatus() != 0) ||
(response.getType() == PDU.REPORT)) {
return true;
}
boolean finished = false;
OID lastOID = request.get(0).getOid();
for (int i=0; (!finished) && (i<response.size()); i++) {
VariableBinding vb = response.get(i);
if ((vb.getOid() == null) ||
(vb.getOid().size() < rootOID.size()) ||
(rootOID.leftMostCompare(rootOID.size(), vb.getOid()) != 0)) {
finished = true;
}
else if (Null.isExceptionSyntax(vb.getVariable().getSyntax())) {
System.out.println(vb.toString());
finished = true;
}
else if (vb.getOid().compareTo(lastOID) <= 0) {
System.out.println("Variable received is not lexicographic successor of requested one:");
System.out.println(vb.toString() + " <= "+lastOID);
finished = true;
}
else {
System.out.println(vb.toString());
lastOID = vb.getOid();
}
}
if (response.size() == 0) {
finished = true;
}
if (!finished) {
VariableBinding next = response.get(response.size()-1);
next.setVariable(new Null());
request.set(0, next);
request.setRequestID(new Integer32(0));
}
return finished;
}
private static Vector getVariableBindings(String[] args, int position) {
Vector v = new Vector(args.length-position+1);
for (int i=position; i<args.length; i++) {
String oid = args[i];
char type = 'i';
String value = null;
int equal = oid.indexOf("={");
if (equal > 0) {
oid = args[i].substring(0, equal);
type = args[i].charAt(equal+2);
value = args[i].substring(args[i].indexOf('}')+1);
}
else if (oid.indexOf('-') > 0) {
StringTokenizer st = new StringTokenizer(oid, "-");
if (st.countTokens() != 2) {
throw new IllegalArgumentException("Illegal OID range specified: '"+
oid);
}
oid = st.nextToken();
VariableBinding vbLower = new VariableBinding(new OID(oid));
v.add(vbLower);
long last = Long.parseLong(st.nextToken());
long first = vbLower.getOid().lastUnsigned();
for (long k=first+1; k<=last; k++) {
OID nextOID = new OID(vbLower.getOid().getValue(), 0,
vbLower.getOid().size()-1);
nextOID.appendUnsigned(k);
VariableBinding next = new VariableBinding(nextOID);
v.add(next);
}
continue;
}
VariableBinding vb = new VariableBinding(new OID(oid));
if (value != null) {
Variable variable;
switch (type) {
case 'i':
variable = new Integer32(Integer.parseInt(value));
break;
case 'u':
variable = new UnsignedInteger32(Long.parseLong(value));
break;
case 's':
variable = new OctetString(value);
break;
case 'x':
variable = OctetString.fromString(value, ':', 16);
break;
case 'd':
variable = OctetString.fromString(value, '.', 10);
break;
case 'b':
variable = OctetString.fromString(value, ' ', 2);
break;
case 'n':
variable = new Null();
break;
case 'o':
variable = new OID(value);
break;
case 't':
variable = new TimeTicks(Long.parseLong(value));
break;
case 'a':
variable = new IpAddress(value);
break;
default:
throw new IllegalArgumentException("Variable type "+type+
" not supported");
}
vb.setVariable(variable);
}
v.add(vb);
}
return v;
}
private static Address getAddress(String transportAddress) {
String transport = "udp";
int colon = transportAddress.indexOf(':');
if (colon > 0) {
transport = transportAddress.substring(0, colon);
transportAddress = transportAddress.substring(colon+1);
}
// set default port
if (transportAddress.indexOf('/') < 0) {
transportAddress += "/161";
}
if (transport.equalsIgnoreCase("udp")) {
return new UdpAddress(transportAddress);
}
else if (transport.equalsIgnoreCase("tcp")) {
return new TcpAddress(transportAddress);
}
throw new IllegalArgumentException("Unknown transport "+transport);
}
private static String nextOption(String[] args, int position) {
if (position+1 >= args.length) {
throw new IllegalArgumentException("Missing option value for " +
args[position]);
}
return args[position+1];
}
private static OctetString createOctetString(String s) {
OctetString octetString;
if (s.startsWith("0x")) {
octetString = OctetString.fromHexString(s.substring(2), ':');
}
else {
octetString = new OctetString(s);
}
return octetString;
}
private int parseArgs(String[] args) {
for (int i=0; i<args.length; i++) {
if (args[i].equals("-a")) {
String s = nextOption(args, i++);
if (s.equals("MD5")) {
authProtocol = AuthMD5.ID;
}
else if (s.equals("SHA")) {
authProtocol = AuthSHA.ID;
}
else {
throw new IllegalArgumentException("Authentication protocol unsupported: "+s);
}
}
else if (args[i].equals("-A")) {
authPassphrase = createOctetString(nextOption(args, i++));
}
else if (args[i].equals("-X") || args[i].equals("-P")) {
privPassphrase = createOctetString(nextOption(args, i++));
}
else if (args[i].equals("-c")) {
community = createOctetString(nextOption(args, i++));
}
else if (args[i].equals("-d")) {
String debugOption = nextOption(args, i++);
Logger.getRootLogger().setLevel(Level.toLevel(debugOption));
}
else if (args[i].equals("-e")) {
authoritativeEngineID = createOctetString(nextOption(args, i++));
}
else if (args[i].equals("-E")) {
contextEngineID = createOctetString(nextOption(args, i++));
}
else if (args[i].equals("-h")) {
printUsage();
System.exit(0);
}
else if (args[i].equals("-n")) {
contextName = createOctetString(nextOption(args, i++));
}
else if (args[i].equals("-r")) {
retries = Integer.parseInt(nextOption(args, i++));
}
else if (args[i].equals("-t")) {
timeout = Integer.parseInt(nextOption(args, i++));
}
else if (args[i].equals("-u")) {
securityName = createOctetString(nextOption(args, i++));
}
else if (args[i].equals("-V")) {
printVersion();
System.exit(0);
}
else if (args[i].equals("-Cr")) {
maxRepetitions = Integer.parseInt(nextOption(args, i++));
}
else if (args[i].equals("-Cn")) {
nonRepeaters = Integer.parseInt(nextOption(args, i++));
}
else if (args[i].equals("-Ce")) {
v1TrapPDU.setEnterprise(new OID(nextOption(args, i++)));
}
else if (args[i].equals("-Ct")) {
trapOID = new OID(nextOption(args, i++));
}
else if (args[i].equals("-Cg")) {
v1TrapPDU.setGenericTrap(Integer.parseInt(nextOption(args, i++)));
}
else if (args[i].equals("-Cs")) {
v1TrapPDU.setSpecificTrap(Integer.parseInt(nextOption(args, i++)));
}
else if (args[i].equals("-Ca")) {
v1TrapPDU.setAgentAddress(new IpAddress(nextOption(args, i++)));
}
else if (args[i].equals("-Cu")) {
String upTime = nextOption(args, i++);
v1TrapPDU.setTimestamp(Long.parseLong(upTime));
sysUpTime.setValue(Long.parseLong(upTime));
}
else if (args[i].equals("-Ow")) {
operation = WALK;
}
else if (args[i].equals("-Ol")) {
operation = LISTEN;
}
else if (args[i].equals("-OtCSV")) {
operation = CVS_TABLE;
}
else if (args[i].equals("-OttCSV")) {
operation = TIME_BASED_CVS_TABLE;
}
else if (args[i].equals("-Ot")) {
operation = TABLE;
}
else if (args[i].equals("-Otd")) {
operation = TABLE;
useDenseTableOperation = true;
}
else if (args[i].equals("-Cil")) {
lowerBoundIndex = new OID(nextOption(args, i++));
}
else if (args[i].equals("-Ciu")) {
upperBoundIndex = new OID(nextOption(args, i++));
}
else if (args[i].equals("-v")) {
String v = nextOption(args, i++);
if (v.equals("1")) {
version = SnmpConstants.version1;
}
else if (v.equals("2c")) {
version = SnmpConstants.version2c;
}
else if (v.equals("3")) {
version = SnmpConstants.version3;
}
else {
throw new IllegalArgumentException("Version "+v+" not supported");
}
}
else if (args[i].equals("-x")) {
String s = nextOption(args, i++);
if (s.equals("DES")) {
privProtocol = PrivDES.ID;
}
else if ((s.equals("AES128")) || (s.equals("AES"))) {
privProtocol = PrivAES128.ID;
}
else if (s.equals("AES192")) {
privProtocol = PrivAES192.ID;
}
else if (s.equals("AES256")) {
privProtocol = PrivAES256.ID;
}
else {
throw new IllegalArgumentException("Privacy protocol " + s +
" not supported");
}
}
else if (args[i].equals("-p")) {
String s = nextOption(args, i++);
pduType = PDU.getTypeFromString(s);
if (pduType == Integer.MIN_VALUE) {
throw new IllegalArgumentException("Unknown PDU type " + s);
}
}
else if (!args[i].startsWith("-")) {
return i;
}
else {
throw new IllegalArgumentException("Unknown option "+args[i]);
}
}
return 0;
}
protected static void printVersion() {
System.out.println();
System.out.println("SNMP4J Command Line Tool v1.6 Copyright "+(char)0xA9+
" 2004-2005, Frank Fock and Jochen Katz");
System.out.println("http://www.snmp4j.org");
System.out.println();
System.out.println("SNMP4J is licensed under the Apache License 2.0:");
System.out.println("http://www.apache.org/licenses/LICENSE-2.0.txt");
System.out.println();
}
/**
* printUsage
*/
protected static void printUsage() {
String[] usage = new String[] {
""
};
for (int i=0; i<usage.length; i++) {
System.out.println(usage[i]);
}
}
protected static void printVariableBindings(PDU response) {
for (int i=0; i<response.size(); i++) {
VariableBinding vb = response.get(i);
System.out.println(vb.toString());
}
}
protected static void printReport(PDU response) {
if (response.size() < 1) {
System.out.println("REPORT PDU does not contain a variable binding.");
return;
}
VariableBinding vb = response.get(0);
OID oid =vb.getOid();
if (SnmpConstants.usmStatsUnsupportedSecLevels.equals(oid)) {
System.out.print("REPORT: Unsupported Security Level.");
}
else if (SnmpConstants.usmStatsNotInTimeWindows.equals(oid)) {
System.out.print("REPORT: Message not within time window.");
}
else if (SnmpConstants.usmStatsUnknownUserNames.equals(oid)) {
System.out.print("REPORT: Unknown user name.");
}
else if (SnmpConstants.usmStatsUnknownEngineIDs.equals(oid)) {
System.out.print("REPORT: Unknown engine id.");
}
else if (SnmpConstants.usmStatsWrongDigests.equals(oid)) {
System.out.print("REPORT: Wrong digest.");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -