计算机软件工程论文软件工程论文:基于Snmp协议网吧管理软件开发技术解析摘要:由于公司业务不断扩大,外部网吧由最初的几家发展到现在的20多家,每家都使用一台QNOFVR360路由器,由于位置分散,不易管理,需要开发一套简单的网管软件,以便于网管的日常维护。在此解析了基于Snmp协议访问网络设备的开发方法。关键词:Snmp;网络;.NET;Oracle1概述1.1Snmp协议SNMP是一系列协议组和规范,它们提供了一种从网络上的设备中收集网络管理信息的方法。SNMP也为设备向网络管理工作站报告问题和错误提供了一种方法。只需要知道网络设备的管理IP,就可以查看网络设备的状态,无需登录名或密码。1.2开发工具Oracle+Ajax+Vss+VS2008。1.3基础设置为保障使用Snmp协议与网络设备相连,必须要把网络设备的防火墙关掉或者在防火墙设置中允许Snmp协议通过。2获取路由器参数值主要是通过已知的网络设备管理IP和交换机的OID来查询实现,例如QnoFVR360路由器系统时间标识为1.3.6.1.2.1.1.3.0。但大多数时候网络设备的OID信息是未知的,如何知道OID属性值成为要点。一种方式是通过厂家获取,另一种方式是通过软件获得。在这里介绍一下通过软件怎样获得。可以通过软件GetIf来获得,这款软件对于网管来说并不陌生,通过它可以知道当前设备的状况,能把网络设备的OID信息、端口状态、路由表、ARP、支持的协议以及网络设备中mac-address-table中的信息都读了出来。GetIf使用:(1)打开Getif在Hostname输入IP地址后,点击“Start”,如果连接成功会在最下面状态栏中出现SysInfovariablesOk提示,如图1所示。(2)在MBrowser标签卡中察看Oid值,例如察看系统时间。如图2所示,点击iso-org-dod-internet-mgmt-mib-2-sysUpTime-sysUpTime后运行Start后出现system..sysUpTime.0:0:1:53:43.00,点击后在最下角出现Oid值为1.3.6.1.2.1.1.3.0,其他属性Oid也按此方法查找。3获取网络设备属性值.NET可以通过调用SnmpSharpNet库,来获得网络设备属性值。具体操作如下。(1)下载SnmpSharpNet库,并进行引用。(2)编写调用类库。publicclassSnmpWork{publicSnmpWork(){}#region通过oid字符数组获得相应的值publicstaticDictionarystring,stringgetOIDValue(stringhost,string[]oid){//返回变量Dictionarystring,stringdic=newDictionarystring,string();OctetStringcommunity=newOctetString(public);AgentParametersparam=newAgentParameters(community);param.Version=SnmpVersion.Ver1;IpAddressagent=newIpAddress(host);UdpTargettarget=newUdpTarget((IPAddress)agent,161,2000,1);Pdupdu=newPdu(PduType.Get);foreach(stringsingleoidinoid){pdu.VbList.Add(singleoid);}SnmpV1Packetresult=(SnmpV1Packet)target.Request(pdu,param);if(result!=null){if(result.Pdu.ErrorStatus==0){for(inti=0;iresult.Pdu.VbList.Count;i++){dic.Add(result.Pdu.VbList[i].Oid.ToString(),result.Pdu.VbList[i].Value.ToString());}}}target.Close();returndic;}#endregion}(3)界面调用代码。string[]oidvalue=newstring[“1.3.6.1.2.1.1.3.0”,”1.3.6.1.2.1.2.2.1.10.4”];Dictionarystring,stringdi=MENUGlobal.SnmpWork.getOIDValue(dev[i,1],oidvalue);stringsysTime=di[oidvalue[0]];stringreceiveByte=di[oidvalue[1]];4数据库设计由于只是针对同一型号的路由器进行操作,所以数据库设计比较简单。4.1设备表createtableSNMPDEVICE(IDINTEGERnotnull,--设备编号DEVICENAMEVARCHAR2(64),--设备名称DEVICEIPVARCHAR2(64),--设备管理IP地址ISLOCKINTEGERdefault1,--是否锁定(0:锁定;1:开启)PORTINTEGER,--端口号REALNAMEVARCHAR2(32),--设备所属维护人员用户名TELEPHONEVARCHAR2(16)-维护人员联系电话)4.2表OIdcreatetableSNMPOID(DEVICEIDINTEGERnotnull,--设备编号IDINTEGERnotnull,--Oid编号OIDVALUEVARCHAR2(64)notnull,--Oid值OIDNAMEVARCHAR2(64),--Oid名称ISLOCKINTEGERdefault1,--是否锁定(0:锁定;1:开启))4.3网络设备历史数据createtableSNMPHISTORY(DEVICEIDINTEGERnotnull,--设备编号OIDIDINTEGERnotnull,--Oid编号VALUEVARCHAR2(64),--值HISTORYDTDATEnotnull--时间)5结语Snmp是一种简单的网络管理协议,简单、灵活、功能强大、易于实现和调试,是开发网管软件的首选协议。但是在开发之前需要考虑一些问题:(1)网络设备是否支持Snmp协议。(2)Snmp传输层协议是基于UDP的,所以需要采取其他方式保证其安全。(3)如果需要定时轮询取值,需要根据网络状况来设定定时时间。(4)保护好网络安全,防止恶意攻击。参考文献[1]晏明峰.用SNMP管理互联网络.第3版.中国水利水电出版社,2001.[2]李明江.SNMP简单网络管理协议.电子工业出版社,2007.[3]胡成松,汪凯.SNMP网络管理.中国电力出版社,2001.