亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.cpp

?? .Net C++ sample code for SNMP programming, Source from Open Source (sample code).
?? CPP
字號:
//
//  SNMP - A C++ Wrapper for the WinSnmp library
//  Copyright (C) 2004  Rog閞io Paulo, rpaulo@bigfoot.com
//
//  This program is free software; you can redistribute it and/or
//  modify it under the terms of the GNU General Public License
//  as published by the Free Software Foundation; either version 2
//  of the License, or (at your option) any later version.
//
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//
//  You should have received a copy of the GNU General Public License
//  along with this program; if not, write to the Free Software
//  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
//

//
// This is a test program set for the code wrapper.
//
// Comment/uncomment these macros to produce different applications
// Note that only one of them can be uncommented:
//#define _SNMP_SCAN_
#define _SNMP_GET_
//#define _SNMP_SET_
//#define _SNMP_WALK_
//#define _SNMP_TRAP_
// 

#include "Winsnmp.h"
#include "SNMPManager.h"
#include "SNMPRemoteAgent.h"
#include "SNMPRemoteAgentSet.h"
#include "SNMPRequest.h"
#include "SNMPRequestSet.h"
#include "SNMPObject.h"
#include "SNMPException.h"
#include "SNMPTracer.h"

#include <iostream>
using namespace std;

#define __VER__ "1.0"

#define IS_OPTION(c)   (((c) == '-') || ((c) == '/'))

int main(int argc, char* argv[]) {
	try {
		SNMPManager::getManager()->startup();

#ifdef _SNMP_WALK_
		std::string oid = "0.0";
		std::string host = "172.18.200.90";
		std::string community = "public";
		bool compare_equal = false;
		bool compare_smaller = false;
		int tmo = 1000;
		unsigned int port = 0;	
		++argv;
		--argc;
		int argn = 0;
		while(argc>0) {
			if(IS_OPTION(**argv)) {
				switch(*(*argv+1)) {
				case 'h':case '?':
					cout << "snmpwalk [-h?] [-T] [-c] [-t<n>] [-p:<n>] host [community [oid]]\n";
					cout << "Options:\n";
					cout << "  h, ? - show this help screen\n";
					cout << "  s - stop walk if next OID is smaller than current OID\n";
					cout << "  e - stop walk if OID is repeated.\n";
					cout << "  t:<n> - set timeout to <n> ms\n";
					cout << "  p:<n> - set remote agent port to <n>, ex: 123\n";
					cout << "  T - enable trace\n";
					cout << "Arguments:\n";
					cout << "  host - address or name of agent's host\n";
					cout << "  community - community name to scan for, ex: public\n";
					cout << "  oid - oid name to walk from, ex: 1.3.6.1.2.1.1.1.0\n";
					return 0;
					break;
				case 'p':
					if( (*(*argv+2)) == ':') { port = atoi(*argv+3); } break;
				case 'e':
					if( (*(*argv+2)) == '\0') { compare_equal = true; } break;
				case 's':
					if( (*(*argv+2)) == '\0') { compare_smaller = true; } break;
				case 't':
					if( (*(*argv+2)) == ':') { tmo = atoi(*argv+3); } break;
				case 'T':
					if( (*(*argv+2)) == '\0') { SNMPTracer::getTracer()->enable(true); } break;
				}
			} else {
				switch(argn) {
					case 0: host = *argv; break;
					case 1: community = *argv; break;
					case 2:	oid = *argv; break;
				}
				argn++;
			}
			++argv; --argc;
		}

		SNMPRemoteAgent ragent(host, community, port);
		
		int oidcount = 1;
		int response = 1;
		SNMPObject * pRet = NULL;
		bool continueWalk = true;
		do {
			SNMPObject sysObj(oid);
			SNMPRemoteAgentGetNextRequest getReq(&sysObj);
			getReq.execute(&ragent);
			getReq.wait(tmo);
			if(getReq.getResultCount()) {
				for(int i=0; i<getReq.getResultCount(); i++) {	
					oid = getReq.getResult(i)->getOID();
					if(compare_smaller) {
						continueWalk &= sysObj.compareOID(oid) >= 0;
					}
					if(compare_equal) {
						continueWalk &= sysObj.compareOID(oid) != 0;
					}
					if(continueWalk) {
						std::cout << response << ": " << getReq.getResult(i)->getDisplayInformation() << "\n";
						response++;
					} else {
						break;
					}
				}						
			} else {
				continueWalk = false;
			}
		} while(continueWalk);
		std::cout << "\n";
		return 0;
#endif

#ifdef _SNMP_SET_
		std::string host = "172.18.200.90";
		std::string community = "public";
		int tmo = 1000;
		unsigned int port = 0;	
		++argv;
		--argc;
		std::string oid = "1.3.6.1.2.1.1.1.0";
		std::string value = "0";
		int type = SNMP_INT;
		int argn = 0;
		while(argc>0) {
			if(IS_OPTION(**argv)) {
				switch(*(*argv+1)) {
				case 'h':case '?':
					cout << "snmpset [-h?] [-T] [-t<n>] [-p:<n>] host [community [oid [value [syntax]]]\n";
					cout << "Options:\n";
					cout << "  h, ? - show this help screen\n";
					cout << "  t:<n> - set timeout to <n> ms\n";
					cout << "  p:<n> - set remote agent port to <n>, ex: 123\n";
					cout << "  T - enable trace\n";
					cout << "Arguments:\n";
					cout << "  host - address or name of agent's host\n";
					cout << "  community - community name to scan for, ex: public \n";
					cout << "  oid - oid name to set, ex: 1.3.6.1.2.1.1.1.0 \n";
					cout << "  value - value to set\n";
					cout << "  syntax - value syntax\n";
					return 0;
					break;
				case 'p':
					if( (*(*argv+2)) == ':') { port = atoi(*argv+3); } break;
				case 't':
					if( (*(*argv+2)) == ':') { tmo = atoi(*argv+3);	} break;
				case 'T':
					if( (*(*argv+2)) == '\0') { SNMPTracer::getTracer()->enable(true); } break;
				}
			} else {
				switch(argn) {
					case 0: host = *argv; break;
					case 1: community = *argv; break;
					case 2: oid = *argv; break;
					case 3: value = *argv; break;
					case 4: type = atoi(*argv); break;
				}
				argn++;
			}
			++argv; --argc;
		}

		SNMPRemoteAgent ragent(host, community, port);
		if(type > SNMP_NULL || type < SNMP_INT) {
			type = SNMP_INT;
		}
		SNMPObject obj(oid);
		obj.setSyntax(type);
		obj.setValueAsString(value);
		SNMPRemoteAgentSetRequest setReq(&obj);
		setReq.execute(&ragent);
		setReq.wait(tmo);
		if(!setReq.succeeded()) {
			if(!setReq.timedOut()) {
				std::cout << setReq.getErrorAsString();
			} else {
				std::cout << "timeout";
			}
		} else {	
			for(int i=0; i<setReq.getResultCount(); i++) {	
				std::cout << setReq.getResult(i)->getDisplayInformation() << "\n";
			}
		}
		std::cout << "\n";
		return 0;
#endif

#ifdef _SNMP_GET_
		std::string host = "172.18.200.90";
		std::string community = "public";
		int tmo = 1000;
		unsigned int port = 0;	
		++argv;
		--argc;
		int oidcount = 0;
		int oidi = 0;
		std::string oidarray[512];
		int argn = 0;
		while(argc>0) {
			if(IS_OPTION(**argv)) {
				switch(*(*argv+1)) {
				case 'h':case '?':
					cout << "snmpget [-h?] [-T] [-t<n>] [-p:<n>] host [community [oid1 [oid2 [... [oidn]]]]\n";
					cout << "Options:\n";
					cout << "  h, ? - show this help screen\n";
					cout << "  t:<n> - set timeout to <n> ms\n";
					cout << "  p:<n> - set remote agent port to <n>, ex: 123\n";
					cout << "  T - enable trace\n";
					cout << "Arguments:\n";
					cout << "  host - address or name of agent's host\n";
					cout << "  community - community name to scan for, ex: public \n";
					cout << "  oid1..n - oid names to scan for, ex: 1.3.6.1.2.1.1.1.0 \n";
					return 0;
					break;
				case 'p':
					if( (*(*argv+2)) == ':') { port = atoi(*argv+3); } break;
				case 't':
					if( (*(*argv+2)) == ':') { tmo = atoi(*argv+3);	} break;
				case 'T':
					if( (*(*argv+2)) == '\0') { SNMPTracer::getTracer()->enable(true); } break;
				}
			} else {
				switch(argn) {
					case 0: host = *argv; break;
					case 1: community = *argv; break;
					default:
						if(oidcount < 512 ) {
							oidarray[oidi] = *argv;
							oidi++;
							oidcount++;
						}
						break;
				}
				argn++;
			}
			++argv; --argc;
		}

		SNMPRemoteAgent ragent(host, community, port);
		
		if(oidcount <= 0) {
			oidcount = 1;
			oidarray[0] = "1.3.6.1.2.1.1.1.0";
		}
		
		SNMPObject * oids = new SNMPObject[oidcount];
		for(int i=0; i<oidcount; i++) {			
			oids[i].setOID(oidarray[i]);
		}
		SNMPRemoteAgentGetRequest getReq(oids, oidcount);
		getReq.execute(&ragent);
		getReq.wait(tmo);
		delete [] oids;		
		if(!getReq.succeeded()) {
			if(!getReq.timedOut()) {
				std::cout << getReq.getErrorAsString();
			} else {
				std::cout << "timeout";
			}
		} else {
			for(int i=0; i<getReq.getResultCount(); i++) {	
				std::cout << getReq.getResult(i)->getDisplayInformation() << "\n";
			}
		}
		std::cout << "\n";
		return 0;
#endif

#ifdef _SNMP_SCAN_	
		unsigned long net = inet_addr("172.18.200.0");
		unsigned long mask = inet_addr("255.255.255.0");
		std::string community = "public";
		std::string oid = "";
		int tmo = 500;
		unsigned int port = 0;
		bool longOutput = false;
		++argv;
		--argc;
		int argn = 0;
		while(argc>0) {
			if(IS_OPTION(**argv)) {
				switch(*(*argv+1)) {
				case 'h':case '?':
					cout << "snmpscan [-h?] [-T] [-t<n>] [-p:<n>] [-a] net mask [community [oid] ]\n";
					cout << "Options:\n";
					cout << "  h, ? - show this help screen\n";
					cout << "  t:<n> - set timeout to <n> ms\n";
					cout << "  p:<n> - set remote agent port to <n>, ex: 123\n";
					cout << "  a - print all attempts\n";
					cout << "  T - enable trace\n";
					cout << "Arguments:\n";
					cout << "  net - address of network to scan (x.y.z.w), ex: 1.2.128.4\n";
					cout << "  mask - network mask (x.y.z.w), ex: 255,255,0,0\n";
					cout << "  community - community name to scan for, ex: public \n";
					cout << "  oid - oid name to scan for, ex: 1.3.6.1.2.1.1.1.0 \n";
					return 0;
					break;
				case 'p':
					if( (*(*argv+2)) == ':') { port = atoi(*argv+3); } break;
				case 't':
					if( (*(*argv+2)) == ':') { tmo = atoi(*argv+3);	} break;
				case 'a':
					if( (*(*argv+2)) == '\0') { longOutput = true; } break;
				case 'T':
					if( (*(*argv+2)) == '\0') { SNMPTracer::getTracer()->enable(true); } break;
				}
			} else {
				switch(argn) {
					case 0: net = inet_addr(*argv);	break;
					case 1:	mask = inet_addr(*argv); break;
					case 2:	community = *argv; break;
					case 3: oid = *argv; break;
				}
				argn++;
			}
			++argv; --argc;
		}

		std::string shost;
		unsigned long host;
		unsigned long subhost = ntohl(net & (~mask));
		unsigned long maxsubhost = ntohl(0xFFFFFFFF & (~mask));

		unsigned long scanCount = 0;
		unsigned long foundCount = 0;
		DWORD tnow = ::GetTickCount();
		int maxInSet = 64;
		
		SNMPRemoteAgentSet agentSet;
		SNMPRequestSet requestSet;
		while(subhost <= maxsubhost) {
			while(subhost <= maxsubhost && requestSet.getRequestCount() < maxInSet) {
				if(subhost == 0) {
					subhost++;
				}
				host = (net & mask) | htonl(subhost);
				struct in_addr addr;
				addr.S_un.S_addr = host;
				shost = std::string(inet_ntoa(addr));
				agentSet.addAgent(shost, community, port);
				SNMPObject obj;
				if(oid == "") {
					obj.setOID("0.0");
					SNMPRemoteAgentGetNextRequest getNextReq(&obj, 1, agentSet.getAgent(agentSet.getAgentCount()-1));
					requestSet.addRequest(&getNextReq);
				} else {		
					obj.setOID(oid);
					SNMPRemoteAgentGetRequest getReq(&obj, 1, agentSet.getAgent(agentSet.getAgentCount()-1));
					requestSet.addRequest(&getReq);
				}
				subhost++;
				scanCount++;
			}
			if(requestSet.getRequestCount()) {
				for(int i=0; i<requestSet.getRequestCount(); i++) {
					requestSet.getRequest(i)->execute();
				}
				requestSet.wait(tmo);

				for(int i=0; i<requestSet.getRequestCount(); i++) {
					if(requestSet.getRequest(i)->getResultCount()) {
						foundCount++;
						std::cout << agentSet.getAgent(i)->getName() << ": " << requestSet.getRequest(i)->getResult(0)->getValueAsString() << "\n";
					} else {							
						if(longOutput) {
							std::cout << agentSet.getAgent(i)->getName() << ": " << "n/a\n";
						}
					}
				}
				requestSet.clear();
				agentSet.clear();
			}
		}
	
		tnow = ::GetTickCount() - tnow;
			std::cout << "\nFound " << foundCount << "/" << scanCount << " in " << ((double)tnow)/((double)1000) << " seconds.\n";
		std::cout << "\n";
		return 0;
#endif

#ifdef _SNMP_TRAP_	
		std::string host = "172.18.200.90";
		std::string community = "public";
		++argv;
		--argc;
		std::string oid = "";
		std::string oidarray[512];
		int argn = 0;
		while(argc>0) {
			if(IS_OPTION(**argv)) {
				switch(*(*argv+1)) {
				case 'h':case '?':
					cout << "snmptrap [-h?] [-T] host [community [oid]]\n";
					cout << "Options:\n";
					cout << "  h, ? - show this help screen\n";
					cout << "  T - enable trace\n";
					cout << "Arguments:\n";
					cout << "  host - address or name of agent's host\n";
					cout << "  community - community name to scan for, ex: public \n";
					cout << "  oid - trap filter \n";
					return 0;
					break;
				case 'T':
					if( (*(*argv+2)) == '\0') { SNMPTracer::getTracer()->enable(true); } break;
				}
			} else {
				switch(argn) {
					case 0: host = *argv; break;
					case 1: community = *argv; break;
					case 2: oid = *argv; break;
				}
				argn++;
			}
			++argv; --argc;
		}

		class MySession : public SNMPSession {
		public: 
			virtual void processTrap(const SNMPObject & obj) {
				std::cout << obj.getDisplayInformation() << "\n";
			}
		};

		MySession session;
		SNMPRemoteAgent ragent(host, community, 0, &session);
		SNMPTrap trap(oid, &ragent);
		trap.enable();
		
		while(true) {
			::Sleep(1000);
		}

		trap.disable();
		std::cout << "\n";
		return 0;		
#endif

	} catch (SNMPException * pe) {
		std::cout << "\n\n";
		std::cout << pe->toStringStack();
		std::cout << "\n";
		delete pe;
	}
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久精品综合| 日韩欧美亚洲另类制服综合在线| 一区二区三区 在线观看视频| 国产欧美一区二区精品忘忧草| 91色九色蝌蚪| 久久电影网站中文字幕| 亚洲人吸女人奶水| 国产亚洲午夜高清国产拍精品| 欧美美女一区二区在线观看| 成+人+亚洲+综合天堂| 久久99精品视频| 亚洲高清免费观看高清完整版在线观看 | 欧美日韩国产色站一区二区三区| 国产91精品久久久久久久网曝门| 免费观看在线色综合| 一级女性全黄久久生活片免费| 亚洲国产精品99久久久久久久久| 日韩美女一区二区三区四区| 欧美午夜精品久久久久久孕妇 | 26uuu久久天堂性欧美| 欧美日韩国产系列| 在线免费观看成人短视频| 成人网男人的天堂| 激情综合网天天干| 蜜臀av一区二区| 日日欢夜夜爽一区| 一区二区三区不卡在线观看| 1024成人网| 国产精品国产自产拍在线| 精品国产露脸精彩对白| 日韩精品一区二区三区swag| 欧美久久久一区| 欧美色网一区二区| 欧美色图第一页| 欧美在线色视频| 欧美视频一区二区三区| 色爱区综合激月婷婷| 一本色道久久综合狠狠躁的推荐| av一区二区三区| 99re热视频这里只精品| youjizz久久| 99久久久无码国产精品| 99久久久精品| 色老汉av一区二区三区| 色成人在线视频| 欧美日韩精品欧美日韩精品一 | 老司机精品视频线观看86| 秋霞电影一区二区| 久久不见久久见中文字幕免费| 美腿丝袜亚洲一区| 国产在线国偷精品产拍免费yy| 国产一区二区三区四区五区美女| 国产精品影视在线观看| 国产成人自拍网| 95精品视频在线| 在线观看成人小视频| 欧美日韩一区二区三区高清| 67194成人在线观看| 日韩欧美国产午夜精品| 2019国产精品| ●精品国产综合乱码久久久久| 一区二区在线观看免费| 亚洲.国产.中文慕字在线| 青青草伊人久久| 国产成人av自拍| 在线观看免费亚洲| 欧美一级欧美一级在线播放| 久久久久久久久久久久久久久99| 日本一区二区在线不卡| 亚洲综合一区二区精品导航| 日日夜夜精品免费视频| 国产精品资源站在线| av电影天堂一区二区在线| 在线观看成人免费视频| 欧美成人综合网站| 国产精品久久精品日日| 偷窥少妇高潮呻吟av久久免费| 久草精品在线观看| 99久久精品免费| 欧美一区日韩一区| 国产精品久久一级| 三级成人在线视频| 成av人片一区二区| 日韩欧美一区二区在线视频| 国产精品传媒在线| 日韩av电影免费观看高清完整版在线观看 | 国产成人aaaa| 欧美天天综合网| 国产午夜一区二区三区| 亚洲大片免费看| 国产iv一区二区三区| 欧美日韩三级一区| 中文字幕欧美国产| 日韩影院免费视频| 波多野结衣中文一区| 欧美一二三区精品| 综合电影一区二区三区| 精品一区二区三区欧美| 欧美中文字幕一区| 日本一区二区不卡视频| 奇米精品一区二区三区在线观看一 | 亚洲激情五月婷婷| 国产麻豆91精品| 91麻豆精品久久久久蜜臀| 136国产福利精品导航| 韩国av一区二区三区| 欧美日韩免费高清一区色橹橹 | 国产精品视频观看| 蜜臀99久久精品久久久久久软件 | 久久久久久久av麻豆果冻| 亚洲一区二区三区视频在线| 成人高清av在线| 久久一夜天堂av一区二区三区| 天堂成人免费av电影一区| 色美美综合视频| 亚洲欧洲性图库| 国产成人在线电影| 精品精品欲导航| 免费视频一区二区| 欧美精品亚洲二区| 亚洲成人黄色小说| 欧美专区亚洲专区| 亚洲日本中文字幕区| 成+人+亚洲+综合天堂| 国产日韩欧美一区二区三区综合| 久久99精品久久久久久| 日韩一区二区三免费高清| 亚洲va在线va天堂| 欧美日韩视频第一区| 亚洲国产精品久久人人爱| 91蝌蚪国产九色| 亚洲天堂av一区| 一本久道久久综合中文字幕 | 一本一道波多野结衣一区二区| 国产精品国产自产拍高清av| 国产电影精品久久禁18| 久久久久久久久伊人| 国产精品影视在线| 国产亚洲欧洲997久久综合| 狠狠色综合播放一区二区| 欧美xxxxx裸体时装秀| 久久精品av麻豆的观看方式| 欧美大肚乱孕交hd孕妇| 激情六月婷婷久久| 久久久久久毛片| 不卡视频在线看| 国产精品三级av在线播放| 丁香六月久久综合狠狠色| 国产精品久久久久久久久久久免费看| 成人美女视频在线观看| 亚洲欧洲精品天堂一级| 色天使久久综合网天天| 亚洲动漫第一页| 欧美一级生活片| 国产99久久久久久免费看农村| 国产精品久久毛片av大全日韩| 99国产精品久久久久久久久久久| 亚洲精品视频免费观看| 欧美久久久一区| 国产精品一区在线观看你懂的| 国产精品国产自产拍在线| 欧美亚洲国产一区二区三区va| 日本成人中文字幕在线视频| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 亚洲一区在线看| 日韩欧美一区在线| 国产69精品久久99不卡| 亚洲日本青草视频在线怡红院| 欧美美女直播网站| 国产一区二区精品久久99| 中文字幕一区二区三区在线观看| 欧美三区在线观看| 精品一区中文字幕| 亚洲欧洲另类国产综合| 91麻豆精品国产91久久久使用方法| 国产裸体歌舞团一区二区| 亚洲毛片av在线| 欧美电影免费观看高清完整版在线| 成人综合激情网| 五月激情综合色| 国产精品乱码一区二三区小蝌蚪| 欧美在线综合视频| 国产成人激情av| 日韩在线播放一区二区| 国产精品理论片在线观看| 91精品国产综合久久久久久 | 一区二区三区在线不卡| 精品国产伦一区二区三区观看体验 | 日韩一区二区在线免费观看| 不卡av在线网| 久久99精品久久久久婷婷| 亚洲一区在线视频| 中文字幕精品一区二区精品绿巨人| 欧美男男青年gay1069videost| 国产成人免费视频精品含羞草妖精| 亚洲自拍偷拍九九九| 久久精品一区二区三区不卡 | 午夜精品免费在线| 中文字幕欧美激情| 欧美大片一区二区|