⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snmpset.cpp

📁 JdonFramework need above jdk 1.4.0 This version has passed under Tomcat 4.x/5.x JBoss 3.x/JBoss 4.0
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	     if ( !oid.valid()) {            // check validity of user oid		    cout << "Invalid Oid, " << argv[2] << "\n";		    return 1;         }      }   }   //---------[ determine options to use ]-----------------------------------   snmp_version version=version1;                  // default is v1   int retries=1;                                  // default retries is 1   int timeout=100;                                // default is 1 second   u_short port=161;                               // default snmp port is 161   OctetStr community("public");                   // community name   OctetStr get_community;#ifdef _SNMPv3   OctetStr privPassword("");   OctetStr authPassword("");   OctetStr securityName("");   int securityModel = SecurityModel_USM;   int securityLevel = SecurityLevel_authPriv;   OctetStr contextName("");   OctetStr contextEngineID("");   long authProtocol = SNMPv3_usmNoAuthProtocol;   long privProtocol = SNMPv3_usmNoPrivProtocol;   v3MP *v3_MP;#endif   char *ptr;   for(int x=1;x<argc;x++) {                           // parse for version     if ( strstr( argv[x],"-v2")!= 0) {       version = version2c;       continue;     }     if ( strstr( argv[x],"-r")!= 0) {                 // parse for retries       ptr = argv[x]; ptr++; ptr++;       retries = atoi(ptr);       if (( retries<0)|| (retries>5)) retries=1;        continue;     }     if ( strstr( argv[x], "-t")!=0) {                 // parse for timeout       ptr = argv[x]; ptr++; ptr++;       timeout = atoi( ptr);       if (( timeout < 100)||( timeout>500)) timeout=100;       continue;     }     if ( strstr( argv[x],"-C")!=0) {       ptr = argv[x]; ptr++; ptr++;       community = ptr;       continue;     }     if ( strstr( argv[x],"-G")!=0) {       ptr = argv[x]; ptr++; ptr++;       get_community = ptr;       continue;     }     if ( strstr( argv[x],"-P")!=0) {       ptr = argv[x]; ptr++; ptr++;       sscanf(ptr, "%hu", &port);       continue;     }#ifdef _SNMPv3     if ( strstr( argv[x],"-v3")!= 0) {       version = version3;       continue;     }     if ( strstr( argv[x],"-auth") != 0) {       ptr = argv[x]; ptr+=5;       if (strcasecmp(ptr, "SHA") == 0)	   authProtocol = SNMP_AUTHPROTOCOL_HMACSHA;       else if (strcasecmp(ptr, "MD5") == 0)	   authProtocol = SNMP_AUTHPROTOCOL_HMACMD5;       else	   authProtocol = SNMP_AUTHPROTOCOL_NONE;       continue;     }     if ( strstr( argv[x],"-priv") != 0) {       ptr = argv[x]; ptr+=5;       if (strcasecmp(ptr, "DES") == 0)	   privProtocol = SNMP_PRIVPROTOCOL_DES;       else if (strcasecmp(ptr, "3DESEDE") == 0)	   privProtocol = SNMP_PRIVPROTOCOL_3DESEDE;       else if (strcasecmp(ptr, "IDEA") == 0)	   privProtocol = SNMP_PRIVPROTOCOL_IDEA;       else if (strcasecmp(ptr, "AES128") == 0)	   privProtocol = SNMP_PRIVPROTOCOL_AES128;       else if (strcasecmp(ptr, "AES192") == 0)	   privProtocol = SNMP_PRIVPROTOCOL_AES192;       else if (strcasecmp(ptr, "AES256") == 0)	   privProtocol = SNMP_PRIVPROTOCOL_AES256;       else	   privProtocol = SNMP_PRIVPROTOCOL_NONE;       printf("\n\nPrivProt : %ld\n", privProtocol);       continue;     }     if ( strstr( argv[x],"-sn")!=0) {       ptr = argv[x]; ptr+=3;       securityName = ptr;       continue;      }     if ( strstr( argv[x], "-sl")!=0) {       ptr = argv[x]; ptr+=3;       securityLevel = atoi( ptr);       if (( securityLevel < SecurityLevel_noAuthNoPriv) ||           ( securityLevel > SecurityLevel_authPriv))         securityLevel = SecurityLevel_authPriv;       continue;     }     if ( strstr( argv[x], "-sm")!=0) {       ptr = argv[x]; ptr+=3;       securityModel = atoi( ptr);       if (( securityModel < SecurityModel_v1) ||           ( securityModel > SecurityModel_USM))         securityModel = SecurityModel_USM;       continue;     }     if ( strstr( argv[x],"-cn")!=0) {       ptr = argv[x]; ptr+=3;       contextName = ptr;       continue;     }     if ( strstr( argv[x],"-ce")!=0) {       ptr = argv[x]; ptr+=3;       contextEngineID = OctetStr::from_hex_string(ptr);       continue;     }     if ( strstr( argv[x],"-ua")!=0) {       ptr = argv[x]; ptr+=3;       authPassword = ptr;       continue;     }     if ( strstr( argv[x],"-up")!=0) {       ptr = argv[x]; ptr+=3;       privPassword = ptr;       continue;     }#endif  }   if (get_community.len() == 0)     get_community = community;   //----------[ create a SNMP++ session ]-----------------------------------   int status;   // bind to any port and use IPv6 if needed   Snmp snmp(status, 0, (address.get_ip_version() == Address::version_ipv6));   if ( status != SNMP_CLASS_SUCCESS) {      cout << "SNMP++ Session Create Fail, " << snmp.error_msg(status) << "\n";      return 1;   }   //---------[ init SnmpV3 ]--------------------------------------------#ifdef _SNMPv3   if (version == version3) {     char *engineId = "snmpSet";     char *filename = "snmpv3_boot_counter";     unsigned int snmpEngineBoots = 0;     int status;     status = getBootCounter(filename, engineId, snmpEngineBoots);     if ((status != SNMPv3_OK) && (status < SNMPv3_FILEOPEN_ERROR))     {       cout << "Error loading snmpEngineBoots counter: " << status << endl;       return 1;     }     snmpEngineBoots++;     status = saveBootCounter(filename, engineId, snmpEngineBoots);     if (status != SNMPv3_OK)     {       cout << "Error saving snmpEngineBoots counter: " << status << endl;       return 1;     }     int construct_status;     v3_MP = new v3MP(engineId, snmpEngineBoots, construct_status);     USM *usm = v3_MP->get_usm();     usm->add_usm_user(securityName,		       authProtocol, privProtocol,		       authPassword, privPassword);   }   else   {     // MUST create a dummy v3MP object if _SNMPv3 is enabled!     int construct_status;     v3_MP = new v3MP("dummy", 0, construct_status);   }#endif   //--------[ build up SNMP++ object needed ]-------------------------------   Pdu pdu;                               // construct a Pdu object   Vb vb;                                 // construct a Vb object   vb.set_oid( oid);                      // set the Oid portion of the Vb   pdu += vb;                             // add the vb to the Pdu   address.set_port(port);   CTarget ctarget( address);             // make a target using the address#ifdef _SNMPv3   UTarget utarget( address);   if (version == version3) {     utarget.set_version( version);          // set the SNMP version SNMPV1 or V2 or V3     utarget.set_retry( retries);            // set the number of auto retries     utarget.set_timeout( timeout);          // set timeout     utarget.set_security_model( securityModel);     utarget.set_security_name( securityName);     pdu.set_security_level( securityLevel);     pdu.set_context_name (contextName);     pdu.set_context_engine_id(contextEngineID);   }   else {#endif     ctarget.set_version( version);         // set the SNMP version SNMPV1 or V2     ctarget.set_retry( retries);           // set the number of auto retries     ctarget.set_timeout( timeout);         // set timeout     ctarget.set_readcommunity( get_community); // set the read community name     ctarget.set_writecommunity( community);// set the write community name#ifdef _SNMPv3   }#endif  //-------[ issue the request, blocked mode ]-----------------------------  cout << "SNMP++ Set to " << argv[1] << " SNMPV" #ifdef _SNMPv3        << ((version==version3) ? (version) : (version+1))#else        << (version+1)#endif        << " Retries=" << retries        << " Timeout=" << timeout * 10 <<"ms";#ifdef _SNMPv3   if (version == version3)     cout << endl          << "securityName= " << securityName.get_printable()          << ", securityLevel= " << securityLevel          << ", securityModel= " << securityModel << endl          << "contextName= " << contextName.get_printable()          << ", contextEngineID= " << contextEngineID.get_printable()          << endl;   else#endif     cout << " SET-community=" << community.get_printable()	  << " GET-community=" << get_community.get_printable() << endl << flush;   SnmpTarget *target;#ifdef _SNMPv3   if (version == version3)     target = &utarget;   else#endif     target = &ctarget;  // first get the variabel to determine its type  if (( status = snmp.get( pdu,*target))== SNMP_CLASS_SUCCESS) {    pdu.get_vb( vb,0);    cout << "Oid = " << vb.get_printable_oid() << endl	 << "Current Value = " << vb.get_printable_value() << endl;#ifdef _SNMPv3    if (pdu.get_type() == REPORT_MSG) {      cout << "Received a reportPdu: "           << snmp.error_msg( vb.get_printable_oid())            << endl           << vb.get_printable_oid() << " = "           << vb.get_printable_value() << endl;      return -5;    }#endif    if ( determine_vb(vb.get_syntax(), vb)) {      // do the Set      Pdu setpdu;#ifdef _SNMPv3      setpdu.set_security_level(securityLevel);      setpdu.set_context_name (contextName);      setpdu.set_context_engine_id(contextEngineID);#endif      vb.set_oid( oid);           // use the same oid as the inquire      setpdu += vb;       status = snmp.set( setpdu, *target);      cout << "Set Status = " << snmp.error_msg( status) << "\n";    }  }  else    cout << "SNMP++ Set Error, " << snmp.error_msg( status) << "\n";  Snmp::socket_cleanup();  // Shut down socket subsystem}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -