snmpvacmconfigure.java.txt
上传用户:aonuowh
上传日期:2021-05-23
资源大小:35390k
文件大小:27k
源码类别:

SNMP编程

开发平台:

C/C++

  1. /* $Id: snmpvacmconfigure.src,v 1.3 2002/09/09 05:36:52 parasuraman Exp $ */
  2. /*
  3.  * @(#)snmpvacmconfigure.java
  4.  * Copyright (c) 1996-2003 AdventNet, Inc. All Rights Reserved.
  5.  * Please read the associated COPYRIGHTS file for more details.
  6.  */
  7. /**
  8.  * This is an example program used for adding entries to
  9.  * the VACM tables, namely "vacmSecurityToGroupTable",
  10.  * "vacmAccessTable" and "vacmViewTreeFamilyTable".
  11.  */
  12. import java.util.StringTokenizer;
  13. import com.adventnet.snmp.snmp2.*;
  14. import com.adventnet.snmp.snmp2.vacm.*;
  15. import com.adventnet.snmp.snmp2.usm.*;
  16. public class snmpvacmconfigure
  17. {
  18. static private final int CREATEACCESS  = 1;
  19. static private final int DELETEACCESS  = 2;
  20. static private final int CREATESEC2GROUP  = 3;
  21. static private final int DELETESEC2GROUP  = 4;
  22. static private final int CREATEVIEW  = 5;
  23. static private final int DELETEVIEW  = 6;
  24. static private final int HELP = 7;
  25. static private final int QUIT = 8;
  26. private final int CREATE_AND_GO = 4;
  27. private final String securityToGroupTableEntry = ".1.3.6.1.6.3.16.1.2.1.";
  28. private final String vacmAccessEntry = ".1.3.6.1.6.3.16.1.4.1.";
  29. private final String vacmFamilyEntry = ".1.3.6.1.6.3.16.1.5.2.1.";
  30. private String params;
  31. static private final String accessHelp =
  32. "nn" +
  33. "------------------------------------------------------------------------n" +
  34. "                           "vacmAccessTable"n" +
  35. "------------------------------------------------------------------------n" +
  36. "S.No ColumnName               Data Type     Size      Possible valuesn" +
  37. "------------------------------------------------------------------------n" +
  38. "1.   vacmGroupName            OCTET STRING  1 .. 32          -n" +
  39. "2.   vacmAccessContextPrefix  OCTET STRING  0 .. 32          -n" +
  40. "3.   vacmAccessSecurityModel  INTEGER         -       0 .. 2147483647n" +
  41. "4.   vacmAccessSecurityLevel  INTEGER         -       1(noAuthNoPriv)n" +
  42. "                                              -       2(authNoPriv)n" +
  43. "                                              -       3(authPriv)n" +
  44. "5.   vacmAccessContextMatch   INTEGER         -       1(exact)n" +
  45. "                                              -       2(prefix)n" +
  46. "6.   vacmAccessReadViewName   OCTET STRING  0 .. 32          -n" +
  47. "7.   vacmAccessWriteViewName  OCTET STRING  0 .. 32          -n" +
  48. "8.   vacmAccessNotifyViewName OCTET STRING  0 .. 32          -n" +
  49. "------------------------------------------------------------------------n";
  50. static private final String securityToGroupHelp =
  51. "nn" +
  52. "------------------------------------------------------------------------n" +
  53. "                           "vacmSecurityToGroupTable"n" +
  54. "------------------------------------------------------------------------n" +
  55. "S.No ColumnName                     Data Type     Size      Possible valuesn" +
  56. "------------------------------------------------------------------------n" +
  57. "1.   vacmSecurityModel              INTEGER         -       0 .. 2147483647n"+
  58. "2.   vacmSecurityName               OCTET STRING  1 .. 32          -n" +
  59. "3.   vacmGroupName                  OCTET STRING  1 .. 32          -n" +
  60. "4.   vacmSecurityToGroupStorageType INTEGER         -       1(other)n" +
  61. "                                                            2(volatile)n" +
  62. "                                                            3(nonVolatile)n" +
  63. "                                                            4(permanent)n" +
  64. "                                                            5(readOnly)n" +
  65. "------------------------------------------------------------------------n";
  66. static private final String familyTableHelp =
  67. "nn" +
  68. "------------------------------------------------------------------------------n" +
  69. "                           "vacmViewTreeFamilyTable"n" +
  70. "------------------------------------------------------------------------------n" +
  71. "S.No ColumnName                  Data Type          Size      Possible valuesn" +
  72. "------------------------------------------------------------------------------n" +
  73. "1.   vacmViewTreeFamilyViewName  OCTET STRING       1 .. 32          -n" +
  74. "2.   vacmViewTreeFamilySubtree   OBJECT IDENTIFIER    -              -n" +
  75. "3.   vacmViewTreeFamilyMask      OCTET STRING       0 .. 16          -n" +
  76. "------------------------------------------------------------------------------n" ;
  77. private SnmpAPI api;
  78. private SnmpSession session;
  79. private int timeout;
  80. private int retries;
  81. private String remoteHost;
  82. private int remotePort;
  83. private int version;
  84. private String contextName;
  85. private String userName;
  86. private String authPassword;
  87. private int authProtocol;
  88. private String privPassword;
  89. private String optionString;
  90. private int action;
  91. private String helpNumber;
  92. public snmpvacmconfigure() throws SnmpException
  93. {
  94. api = new SnmpAPI();
  95. session = new SnmpSession(api);
  96. session.open();
  97. timeout = 5000;
  98. retries = 0;
  99. remoteHost = null;
  100. remotePort = 161;
  101. version = 0;
  102. contextName = null;
  103. userName = null;
  104. authPassword = null;
  105. authProtocol = USMUserEntry.NO_AUTH;
  106. privPassword = null;
  107. params = null;
  108. optionString = 
  109. "nn---------------------------------------n" +
  110. "1. createAccessn" +
  111. "2. deleteAccessn" +
  112. "3. createSec2Groupn" +
  113. "4. deleteSec2Groupn" +
  114. "5. createViewn" +
  115. "6. deleteViewn" +
  116. "7. Helpn" +
  117. "8. Quitn" +
  118. "Enter a Choice :";
  119. helpNumber = "";
  120. }
  121. public void setRemoteHost(String host)
  122. {
  123. this.remoteHost = host;
  124. }
  125. public void setRemotePort(int remotePort)
  126. {
  127. this.remotePort = remotePort;
  128. }
  129. public void setTimeout(int timeout)
  130. {
  131. this.timeout = timeout;
  132. }
  133. public void setRetries(int retries)
  134. {
  135. this.retries = retries;
  136. }
  137. public void setVersion(int version)
  138. {
  139. this.version = version;
  140. }
  141. public void setContextName(String contextName)
  142. {
  143. this.contextName = contextName;
  144. }
  145. public void setUserName(String userName)
  146. {
  147. this.userName = userName;
  148. }
  149. public void setAuthPassword(String authPassword)
  150. {
  151. this.authPassword = authPassword;
  152. }
  153. public void setAuthProtocol(int authProtocol)
  154. {
  155. this.authProtocol = authProtocol;
  156. }
  157. public void setPrivPassword(String privPassword)
  158. {
  159. this.privPassword = privPassword;
  160. }
  161. public void initDatabase(String driver, String url,
  162. String user, String password)throws SnmpException
  163. {
  164. try
  165. {
  166. api.initJdbcParams(driver, url, user, password);
  167. }
  168. catch(Exception exp)
  169. {
  170. throw new SnmpException(exp.toString());
  171. }
  172. }
  173. public void createUSMEntry() throws SnmpException
  174. {
  175. if(userName == null || userName.length() == 0)
  176. {
  177. throw new SnmpException("Invalid UserName.");
  178. }
  179. if(authPassword != null && authProtocol == USMUserEntry.NO_AUTH)
  180. {
  181. throw new SnmpException(
  182. "Specify the authProtocol if authPassword is specified.");
  183. }
  184. if(privPassword != null && authPassword == null)
  185. {
  186. throw new SnmpException(
  187. "An user cannot be "noAuth,Priv", " +
  188. "hence specify the authPassword");
  189. }
  190. USMUtils.init_v3_params(userName, authProtocol, authPassword,
  191. privPassword, remoteHost, remotePort, session);
  192. System.out.println("nnSuccessfully created the USM entry for " +
  193. remoteHost + ":" + remotePort + ":" + userName + ".");
  194. }
  195. public void close()
  196. {
  197. session.close();
  198. api.close();
  199. }
  200. public void processConfiguration()
  201. {
  202. int action = -1;
  203. String line = "";
  204. do
  205. {
  206. try
  207. {
  208. helpNumber = "";
  209. System.out.print(optionString);
  210. StringTokenizer st = new StringTokenizer(readLine());
  211. int tokens = st.countTokens();
  212. line = st.nextToken();
  213. if(tokens > 1)
  214. {
  215. helpNumber = st.nextToken();
  216. }
  217. try
  218. {
  219. action = Integer.parseInt(line);
  220. if(!isValidOption(action))
  221. {
  222. System.out.println("nInvalid option. " + action);
  223. continue;
  224. }
  225. performAction(action);
  226. }
  227. catch(NumberFormatException exp)
  228. {
  229. System.out.println("Invalid Option. " + line);
  230. continue;
  231. }
  232. }
  233. catch(Exception exp)
  234. {
  235. }
  236. }while(action != QUIT);
  237. }
  238. private void performAction(int action)
  239. {
  240. switch(action)
  241. {
  242. case CREATEACCESS:
  243. {
  244. createAccess();
  245. break;
  246. }
  247. case DELETEACCESS:
  248. {
  249. deleteAccess();
  250. break;
  251. }
  252. case CREATESEC2GROUP:
  253. {
  254. createSecurityToGroup();
  255. break;
  256. }
  257. case DELETESEC2GROUP:
  258. {
  259. deleteSecurityToGroup();
  260. break;
  261. }
  262. case CREATEVIEW:
  263. {
  264. createView();
  265. break;
  266. }
  267. case DELETEVIEW:
  268. {
  269. deleteView();
  270. break;
  271. }
  272. case HELP:
  273. {
  274. help();
  275. break;
  276. }
  277. }
  278. }
  279. private SnmpPDU getSnmpPDU()
  280. {
  281. SnmpPDU pdu = new SnmpPDU();
  282. pdu.setRemoteHost(remoteHost);
  283. pdu.setRemotePort(remotePort);
  284. pdu.setVersion(version);
  285. pdu.setCommand(api.SET_REQ_MSG);
  286. if(version == SnmpAPI.SNMP_VERSION_3)
  287. {
  288. if(userName != null)
  289. {
  290. pdu.setUserName(userName.getBytes());
  291. }
  292. if(contextName != null)
  293. {
  294. pdu.setContextName(contextName.getBytes());
  295. }
  296. }
  297. return pdu;
  298. }
  299. private void createAccess()
  300. {
  301. try
  302. {
  303. if(params == null)
  304. {
  305. System.out.println(
  306. "Please enter the following in a single line " +
  307. "seperated by space:n" +
  308. "GROUPNAME PREFIX SECURITYMODEL SECURITYLEVEL MATCH " +
  309. "READ WRITE NOTIFY ");
  310. // + "STORAGE_TYPE");
  311. }
  312. String s = (params == null)? readLine() : params;
  313. StringTokenizer st = new StringTokenizer(s, " ");
  314. String groupName = st.nextToken();
  315. String prefix = st.nextToken();
  316. int model = Integer.parseInt(st.nextToken());
  317. int level = Integer.parseInt(st.nextToken());
  318. int match = Integer.parseInt(st.nextToken());
  319. String readView = st.nextToken();
  320. String writeView = st.nextToken();
  321. String notifyView = st.nextToken();
  322. // int storageType = Integer.parseInt(st.nextToken());
  323. String index = getStringIndex(groupName) + "." +
  324. getStringIndex(prefix) + "." +
  325. model + "." + level;
  326. SnmpPDU pdu = getSnmpPDU();
  327. SnmpVarBind varbind = new SnmpVarBind(
  328. new SnmpOID(vacmAccessEntry + "9." + index),
  329. new SnmpInt(4));
  330. pdu.addVariableBinding(varbind);
  331. varbind = new SnmpVarBind(
  332. new SnmpOID(vacmAccessEntry + "4." + index),
  333. new SnmpInt(match));
  334. pdu.addVariableBinding(varbind);
  335. varbind = new SnmpVarBind(
  336. new SnmpOID(vacmAccessEntry + "5." + index),
  337. new SnmpString(readView));
  338. pdu.addVariableBinding(varbind);
  339. varbind = new SnmpVarBind(
  340. new SnmpOID(vacmAccessEntry + "6." + index),
  341. new SnmpString(writeView));
  342. pdu.addVariableBinding(varbind);
  343. varbind = new SnmpVarBind(
  344. new SnmpOID(vacmAccessEntry + "7." + index),
  345. new SnmpString(notifyView));
  346. pdu.addVariableBinding(varbind);
  347. /* varbind = new SnmpVarBind(
  348. new SnmpOID(vacmAccessEntry + "8." + index),
  349. new SnmpInt(storageType));
  350. pdu.addVariableBinding(varbind);*/
  351. send(pdu);
  352. System.out.println(
  353. "Successfully added an entry to the VacmAccessTable.");
  354. }
  355. catch(Exception exp)
  356. {
  357. System.out.println(
  358. "Unable to create an entry in VacmAccessTable. " + exp);
  359. }
  360. }
  361. private void deleteAccess()
  362. {
  363. try
  364. {
  365. if(params == null)
  366. {
  367. System.out.println(
  368. "Please enter the following in a single line " +
  369. "seperated by space:n" +
  370. "GROUPNAME CONTEXTPREFIX SECURITYMODEL SECURITYLEVEL");
  371. }
  372. String s = (params == null)? readLine() : params;
  373. StringTokenizer st = new StringTokenizer(s, " ");
  374. String groupName = st.nextToken();
  375. String contextPrefix = st.nextToken();
  376. int securityModel = Integer.parseInt(st.nextToken());
  377. int securityLevel = Integer.parseInt(st.nextToken());
  378. String index = vacmAccessEntry + "9." +
  379. getStringIndex(groupName) + "." +
  380. getStringIndex(contextPrefix) + "." + securityModel + "." +
  381. securityLevel;
  382. SnmpOID indexOID = new SnmpOID(index);
  383. SnmpInt indexValue = new SnmpInt(6);
  384. SnmpPDU pdu = getSnmpPDU();
  385. SnmpVarBind varbind = new SnmpVarBind(indexOID, indexValue);
  386. pdu.addVariableBinding(varbind);
  387. send(pdu);
  388. System.out.println("Successfully deleted the entry " +
  389. "from the VacmAccessTable.");
  390. }
  391. catch(Exception exp)
  392. {
  393. System.out.println("Problem encountered while deleting access: " +
  394. exp.toString());
  395. }
  396. }
  397. private void createSecurityToGroup()
  398. {
  399. if(params == null)
  400. {
  401. System.out.println(
  402. "Please enter the following in a single line " +
  403. "seperated by space:n" +
  404. "MODEL SECURITYNAME  GROUPNAME");
  405. // + "STORAGE_TYPE");
  406. }
  407. String s = (params == null)? readLine() : params;
  408. StringTokenizer st = new StringTokenizer(s, " ");
  409. try
  410. {
  411. int model = Integer.parseInt(st.nextToken());
  412. String securityName = st.nextToken();
  413. String groupName = st.nextToken();
  414. // int storageType = Integer.parseInt(st.nextToken());
  415. String index = model + "." + getStringIndex(securityName);
  416. SnmpPDU pdu = getSnmpPDU();
  417. String rowStatusOID = securityToGroupTableEntry + "5." + index;
  418. SnmpOID oid = new SnmpOID(rowStatusOID);
  419. SnmpInt rowStatusValue = new SnmpInt(4);
  420. SnmpVarBind varbind = new SnmpVarBind(oid, rowStatusValue);
  421. pdu.addVariableBinding(varbind);
  422. String groupNameOID = securityToGroupTableEntry + "3." + index;
  423. oid = new SnmpOID(groupNameOID);
  424. SnmpString str = new SnmpString(groupName);
  425. varbind = new SnmpVarBind(oid, str);
  426. pdu.addVariableBinding(varbind);
  427. /*
  428. String storageTypeOID = securityToGroupTableEntry + "4." + index;
  429. oid = new SnmpOID(groupNameOID);
  430. SnmpInt storageTypeValue = new SnmpInt(storageType);
  431. varbind = new SnmpVarBind(oid, storageTypeValue);
  432. pdu.addVariableBinding(varbind);*/
  433. send(pdu);
  434. System.out.println("Successfully added an entry " +
  435. "to the SecurityToGroupTable.");
  436. }
  437. catch(Exception exp)
  438. {
  439. System.out.println(
  440. "Unable to create an entry in the securityToGroupTable. " + exp);
  441. }
  442. }
  443. private void deleteSecurityToGroup()
  444. {
  445. if(params == null)
  446. {
  447. System.out.println(
  448. "Please enter the following in a single line " +
  449. "seperated by space:n" +
  450. "MODEL SECURITYNAME");
  451. }
  452. String s = (params == null)? readLine() : params;
  453. StringTokenizer st = new StringTokenizer(s, " ");
  454. try
  455. {
  456. int model = Integer.parseInt(st.nextToken());
  457. String securityName = st.nextToken();
  458. String index = model + "." + getStringIndex(securityName);
  459. String rowStatusOID = securityToGroupTableEntry + "5." + index;
  460. SnmpPDU pdu = getSnmpPDU();
  461. SnmpOID rowStatus = new SnmpOID(rowStatusOID);
  462. SnmpInt rowStatusValue = new SnmpInt(6);
  463. SnmpVarBind varbind = new SnmpVarBind(rowStatus, rowStatusValue);
  464. pdu.addVariableBinding(varbind);
  465. send(pdu);
  466. System.out.println("Successfully deleted an entry from the " +
  467. "SecurityToGroypTable.");
  468. }
  469. catch(Exception exp)
  470. {
  471. System.out.println(
  472. "Unable to delete an entry from securityToGroupTable. " +
  473. exp.toString());
  474. }
  475. }
  476. private void createView()
  477. {
  478. if(params == null)
  479. {
  480. System.out.println(
  481. "Please enter the following in a single line " +
  482. "seperated by space:n" +
  483. "NAME SUBTREE MASK");
  484. // + "STORAGE_TYPE");
  485. }
  486. try
  487. {
  488. String s = (params == null) ? readLine() : params;
  489. StringTokenizer st = new StringTokenizer(s, " ");
  490. String viewName = st.nextToken();
  491. String subtree = st.nextToken();
  492. SnmpOID subtreeOID = new SnmpOID(subtree);
  493. int[] subids = (int[])subtreeOID.toValue();
  494. if(subids != null)
  495. {
  496. subtree = subids.length + subtreeOID.toString();
  497. }
  498. else
  499. {
  500. throw new Exception("Invalid SUBTREE: " + subtree);
  501. }
  502. String mask = st.nextToken();
  503. // int storageType = Integer.parseInt(st.nextToken());
  504. SnmpPDU pdu = getSnmpPDU();
  505. String index = getStringIndex(viewName) + "." + subtree;
  506. SnmpOID rowStatusOID = new SnmpOID(vacmFamilyEntry+"6."+index);
  507. SnmpInt rowStatus = new SnmpInt(4);
  508. SnmpVarBind varbind = new SnmpVarBind(rowStatusOID, rowStatus);
  509. pdu.addVariableBinding(varbind);
  510. SnmpOID maskOID = new SnmpOID(vacmFamilyEntry + "3." + index);
  511. SnmpString maskValue = new SnmpString(mask);
  512. varbind = new SnmpVarBind(maskOID, maskValue);
  513. pdu.addVariableBinding(varbind);
  514. SnmpOID familyTypeOID = new SnmpOID(vacmFamilyEntry+"4."+index);
  515. SnmpInt familyTypeValue = new SnmpInt(1);
  516. varbind = new SnmpVarBind(familyTypeOID, familyTypeValue);
  517. pdu.addVariableBinding(varbind);
  518. /*
  519. SnmpOID storageTypeOID = new SnmpOID(vacmFamilyEntry+"5."+index);
  520. SnmpInt storageTypeValue = new SnmpInt(storageType);
  521. varbind = new SnmpVarBind(storageTypeOID, storageTypeValue);
  522. pdu.addVariableBinding(varbind);*/
  523. send(pdu);
  524. System.out.println("Successfully added an entry to the " +
  525. "VacmViewTreeFamilyTable.");
  526. }
  527. catch(Exception exp)
  528. {
  529. System.out.println(
  530. "Unable to create an entry in VacmViewTreeFamilyTable. " +
  531. exp.toString());
  532. }
  533. }
  534. private void deleteView()
  535. {
  536. if(params == null)
  537. {
  538. System.out.println(
  539. "Please enter the following in a single line " +
  540. "seperated by space:n" +
  541. "NAME SUBTREE");
  542. }
  543. try
  544. {
  545. String s = (params == null) ? readLine() : params ;
  546. StringTokenizer st = new StringTokenizer(s, " ");
  547. String viewName = st.nextToken();
  548. String subtree = st.nextToken();
  549. SnmpOID subtreeOID = new SnmpOID(subtree);
  550. int[] subids = (int[])subtreeOID.toValue();
  551. if(subids != null)
  552. {
  553. subtree = subids.length + subtreeOID.toString();
  554. }
  555. else
  556. {
  557. System.out.println("Invalid SUBTREE: " + subtree);
  558. }
  559. String index = getStringIndex(viewName) + "." + subtree ;
  560. SnmpPDU pdu = getSnmpPDU();
  561. SnmpOID rowStatusOID = new SnmpOID(vacmFamilyEntry+"6."+index);
  562. SnmpInt rowStatusValue = new SnmpInt(6);
  563. SnmpVarBind varbind = new SnmpVarBind(rowStatusOID,rowStatusValue);
  564. pdu.addVariableBinding(varbind);
  565. send(pdu);
  566. System.out.println("Successfully deleted an entry from the " +
  567. "VacmViewTreeFamilyTable.");
  568. }
  569. catch(Exception exp)
  570. {
  571. System.out.println(
  572. "Unable to delete an entry from the VacmViewTreeFamilyTable. " +
  573. exp.toString());
  574. }
  575. }
  576. private void help()
  577. {
  578. int num = 0;
  579. try
  580. {
  581. if(!helpNumber.equals(""))
  582. {
  583. num = Integer.parseInt(helpNumber);
  584. }
  585. }
  586. catch(Exception exp)
  587. {
  588. }
  589. if(num == 0 || num == CREATEACCESS || num == DELETEACCESS)
  590. {
  591. System.out.print(accessHelp);
  592. }
  593. if(num == 0 || num == CREATESEC2GROUP || num == DELETESEC2GROUP)
  594. {
  595. System.out.print(securityToGroupHelp);
  596. }
  597. if(num == 0 || num == CREATEVIEW || num == DELETEVIEW)
  598. {
  599. System.out.print(familyTableHelp);
  600. }
  601. }
  602. private void send(SnmpPDU pdu) throws Exception
  603. {
  604. SnmpPDU res_pdu = session.syncSend(pdu);
  605. if(res_pdu != null)
  606. {
  607. if(res_pdu.getErrindex() != 0 || res_pdu.getErrstat() != 0)
  608. {
  609. throw new Exception(res_pdu.getError());
  610. }
  611. }
  612. else
  613. {
  614. throw new Exception("SNMP SET Request has timed out.");
  615. }
  616. }
  617. private String getStringIndex(String stringIndexValue)
  618. {
  619. int len = stringIndexValue.length();
  620. StringBuffer sb = new StringBuffer();
  621. sb.append(len);
  622. for(int i=0;i<len;i++)
  623. {
  624. sb.append(".");
  625. sb.append( (int)(stringIndexValue.charAt(i) & 0xff) );
  626. }
  627. return sb.toString();
  628. }
  629. private boolean isValidOption(int option)
  630. {
  631. return (option == CREATEACCESS || option == DELETEACCESS ||
  632. option == CREATESEC2GROUP || option == DELETESEC2GROUP ||
  633. option == DELETESEC2GROUP || option == CREATEVIEW ||
  634. option == DELETEVIEW || option == HELP || option == QUIT);
  635. }
  636. private String readLine()
  637. {
  638. char newLine = 'n';
  639. char ch;
  640. char[] array = new char[10];
  641. int i=0;
  642. String line = "";
  643. try
  644. {
  645. do
  646. {
  647. if(i == array.length)
  648. {
  649. char[] dummy = new char[array.length * 2];
  650. System.arraycopy(array, 0, dummy, 0, array.length);
  651. array = dummy;
  652. }
  653. ch = (char)(System.in.read() & 0xff);
  654. array[i++] = ch;
  655. }
  656. while(ch != newLine);
  657. line = new String(array, 0, i-1);
  658. }
  659. catch(Exception exp)
  660. {
  661. }
  662. return line;
  663. }
  664. public void setDebug(boolean bool)
  665. {
  666. api.setDebug(bool);
  667. }
  668. public static void main(String[] args)
  669. {
  670. int DEBUG  = 0;
  671. int PORT  = 1;
  672. int RETRIES  = 2;
  673. int TIMEOUT  = 3;
  674. // int STORAGE_TYPE = 4;
  675. int VERSION = 4;
  676. int USERNAME  = 5;
  677. int AUTHPROTOCOL  = 6;
  678. int AUTHPASSWORD  = 7;
  679. int PRIVPASSWORD  = 8;
  680. int CONTEXTNAME  = 9;
  681. int CONTEXTID  = 10;
  682. int DB_DRIVER  = 11;
  683. int DB_URL  = 12;
  684. int DB_USER  = 13;
  685. int DB_PASSWORD  = 14;
  686. int HOST  = 0;
  687. String usage =
  688. "nsnmpget [-d] [-p port] [-r retries] [-t timeout]n" +
  689. // "[-st storage_type]n" +
  690. "[-v version(v1/v2/v3)]" + 
  691. "[-u userName]n" +
  692. "[-a auth_protocol] [-w auth_password] [-s priv_password]n" +
  693. "[-n contextName] [-i contextID]n" +
  694. "[-DB_driver database_driver]n" +
  695. "[-DB_url database_url]n" +
  696. "[-DB_username database_username]n" +
  697. "[-DB_password database_password]n" +
  698. "host [command]nn" +
  699. "COMMANDn" +
  700. "createAccess GROUPNAME PREFIX SECURITYMODEL SECURITYLEVEL MATCH READ WRITE NOTIFY n" +
  701. // "[-st storage_type]n" +
  702. "deleteAccess GROUPNAME CONTEXTPREFIX SECURITYMODEL SECURITYLEVELn" +
  703. "createSecurityToGroup MODEL SECURITYNAME GROUPNAME n" +
  704. // "[-st storage_type]n" +
  705. "deleteSecurityToGroup MODEL SECURITYNAMEn" +
  706. "createView NAME SUBTREE MASK [-type familyType]n" +
  707. // "[-st storage_type]n" + 
  708. "deleteView NAME SUBTREEn";
  709. String options[] =
  710. {
  711. "-d", "-p", "-r", "-t"
  712. // "-st"
  713. ,"-v"
  714. ,"-u", "-a", "-w", "-s", "-n", "-i",
  715. "-DB_driver", "-DB_url", "-DB_username", "-DB_password"
  716. };
  717. String values[] =
  718. {
  719. "None", null, null, null
  720. // null
  721. ,null
  722. ,null, null, null, null, null, null,
  723. null, null, null, null
  724. };
  725. ParseOptions opt = new ParseOptions(args, options, values, usage);
  726. if(opt.remArgs.length == 0)
  727. {
  728. System.out.println("Host field is Mandatory.");
  729. System.out.println(usage);
  730. System.exit(1);
  731. }
  732. snmpvacmconfigure vacmConfig = null;
  733. try
  734. {
  735. vacmConfig = new snmpvacmconfigure();
  736. }
  737. catch(SnmpException exp)
  738. {
  739. System.out.println(exp.toString());
  740. System.exit(1);
  741. }
  742. vacmConfig.setRemoteHost(opt.remArgs[HOST]);
  743. if(values[VERSION] != null)
  744. {
  745. if(values[VERSION].equals("v1"))
  746. {
  747. vacmConfig.setVersion(SnmpAPI.SNMP_VERSION_1);
  748. }
  749. else if(values[VERSION].equals("v2"))
  750. {
  751. vacmConfig.setVersion(SnmpAPI.SNMP_VERSION_2);
  752. }
  753. else if(values[VERSION].equals("v3"))
  754. {
  755. vacmConfig.setVersion(SnmpAPI.SNMP_VERSION_3);
  756. }
  757. }
  758. if(vacmConfig.version == SnmpAPI.SNMP_VERSION_3)
  759. {
  760. if(values[USERNAME] == null)
  761. {
  762. System.out.println(
  763. "UserName should be specified in case of SNMP_3.");
  764. System.exit(1);
  765. }
  766. vacmConfig.setUserName(values[USERNAME]);
  767. vacmConfig.setAuthPassword(values[AUTHPASSWORD]);
  768. if(values[AUTHPROTOCOL] != null)
  769. {
  770. if(values[AUTHPROTOCOL].equals("MD5"))
  771. {
  772. vacmConfig.setAuthProtocol(USMUserEntry.MD5_AUTH);
  773. }
  774. else if(values[AUTHPROTOCOL].equals("SHA"))
  775. {
  776. vacmConfig.setAuthProtocol(USMUserEntry.SHA_AUTH);
  777. }
  778. else
  779. {
  780. System.out.println("Invalid AuthProtocol. " +
  781. "It can be either MD5 or SHA: " + values[AUTHPROTOCOL]);
  782. System.exit(1);
  783. }
  784. }
  785. vacmConfig.setPrivPassword(values[PRIVPASSWORD]);
  786. try
  787. {
  788. vacmConfig.createUSMEntry();
  789. }
  790. catch(Exception exp)
  791. {
  792. System.out.println("Could not create USM Entry.n" +
  793. "Please check the parameters: " + exp.toString());
  794. System.exit(1);
  795. }
  796. vacmConfig.setContextName(values[CONTEXTNAME]);
  797. }
  798. if(values[TIMEOUT] != null)
  799. {
  800. try
  801. {
  802. vacmConfig.setTimeout(Integer.parseInt(values[TIMEOUT]));
  803. }
  804. catch(NumberFormatException nfe)
  805. {
  806. System.out.println("Invalid timeout value:"+values[TIMEOUT] );
  807. System.exit(1);
  808. }
  809. }
  810. if(values[RETRIES] != null)
  811. {
  812. try
  813. {
  814. vacmConfig.setRetries(Integer.parseInt(values[RETRIES]));
  815. }
  816. catch(NumberFormatException nfe)
  817. {
  818. System.out.println("Invalid retries value:"+values[RETRIES] );
  819. System.exit(1);
  820. }
  821. }
  822. if(values[PORT] != null)
  823. {
  824. try
  825. {
  826. vacmConfig.setRemotePort(Integer.parseInt(values[PORT]));
  827. }
  828. catch(NumberFormatException nfe)
  829. {
  830. System.out.println("Invalid port:" + values[PORT]);
  831. System.exit(1);
  832. }
  833. }
  834. if(values[DEBUG].equals("Set"))
  835. {
  836. vacmConfig.setDebug(true);
  837. }
  838. if(opt.remArgs.length > 1)
  839. {
  840. String s = opt.remArgs[1];
  841. if(s.equals("createAccess"))
  842. {
  843. if(opt.remArgs.length == 10)
  844. {
  845. StringBuffer sb = new StringBuffer();
  846. for(int i=2;i<opt.remArgs.length;i++)
  847. {
  848. sb.append(opt.remArgs[i] + " ");
  849. }
  850. /* if(values[STORAGE_TYPE] != null)
  851. {
  852. sb.append(values[STORAGE_TYPE]);
  853. }
  854. else
  855. {
  856. sb.append("3");
  857. }*/
  858. vacmConfig.params = sb.toString();
  859. vacmConfig.createAccess();
  860. }
  861. else
  862. {
  863. System.out.println(usage);
  864. }
  865. }
  866. else if(s.equals("deleteAccess"))
  867. {
  868. if(opt.remArgs.length == 6)
  869. {
  870. StringBuffer sb = new StringBuffer();
  871. for(int i=2;i<opt.remArgs.length;i++)
  872. {
  873. sb.append(opt.remArgs[i] + " ");
  874. }
  875. vacmConfig.params = sb.toString();
  876. vacmConfig.deleteAccess();
  877. }
  878. else
  879. {
  880. System.out.println(usage);
  881. }
  882. }
  883. else if(s.equals("createSecurityToGroup"))
  884. {
  885. if(opt.remArgs.length == 5)
  886. {
  887. StringBuffer sb = new StringBuffer();
  888. for(int i=2;i<opt.remArgs.length;i++)
  889. {
  890. sb.append(opt.remArgs[i] + " ");
  891. }
  892. /* if(values[STORAGE_TYPE] != null)
  893. {
  894. sb.append(values[STORAGE_TYPE]);
  895. }
  896. else
  897. {
  898. sb.append("3");
  899. }*/
  900. vacmConfig.params = sb.toString();
  901. vacmConfig.createSecurityToGroup();
  902. }
  903. else
  904. {
  905. System.out.println(usage);
  906. }
  907. }
  908. else if(s.equals("deleteSecurityToGroup"))
  909. {
  910. if(opt.remArgs.length == 4)
  911. {
  912. StringBuffer sb = new StringBuffer();
  913. for(int i=2;i<opt.remArgs.length;i++)
  914. {
  915. sb.append(opt.remArgs[i] + " ");
  916. }
  917. vacmConfig.params = sb.toString();
  918. vacmConfig.deleteSecurityToGroup();
  919. }
  920. else
  921. {
  922. System.out.println(usage);
  923. }
  924. }
  925. else if(s.equals("createView"))
  926. {
  927. if(opt.remArgs.length == 5)
  928. {
  929. StringBuffer sb = new StringBuffer();
  930. for(int i=2;i<opt.remArgs.length;i++)
  931. {
  932. sb.append(opt.remArgs[i] + " ");
  933. }
  934. /* if(values[STORAGE_TYPE] != null)
  935. {
  936. sb.append(values[STORAGE_TYPE]);
  937. }
  938. else
  939. {
  940. sb.append("3");
  941. }*/
  942. vacmConfig.params = sb.toString();
  943. vacmConfig.createView();
  944. }
  945. else
  946. {
  947. System.out.println(usage);
  948. }
  949. }
  950. else if(s.equals("deleteView"))
  951. {
  952. if(opt.remArgs.length == 4)
  953. {
  954. StringBuffer sb = new StringBuffer();
  955. for(int i=2;i<opt.remArgs.length;i++)
  956. {
  957. sb.append(opt.remArgs[i] + " ");
  958. }
  959. vacmConfig.params = sb.toString();
  960. vacmConfig.deleteView();
  961. }
  962. else
  963. {
  964. System.out.println(usage);
  965. }
  966. }
  967. else
  968. {
  969. System.out.println(
  970. "COMMAND should be any one of the following:");
  971. System.out.println(
  972. "createAccess deleteAccess createSecurityToGroup");
  973. System.out.println(
  974. "deleteSecurityToGroup createView deleteView");
  975. }
  976. System.exit(1);
  977. }
  978. vacmConfig.processConfiguration();
  979. vacmConfig.close();
  980. System.exit(1);
  981. }
  982. }