网管实验指导书Word文档下载推荐.docx
《网管实验指导书Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《网管实验指导书Word文档下载推荐.docx(28页珍藏版)》请在冰点文库上搜索。
安装并配置SNMP服务器的过程:
打开"
控制面板-〉添加/删除程序"
,选择"
添加/删除Windows组件"
,接着在随后弹出的"
Windows组件"
中选择"
管理和监视工具"
,点击下面的"
详细信息"
,在弹出的一个"
的对话框中选择"
简单网络管理协议SNMP"
,确定后点击"
下一步"
就可以安装SNMP服务器了。
安装成功后在"
控制面板-〉管理工具-〉服务"
中能看见SNMP服务已经启动,双击"
SNMPservice"
就可以对其属性进行配置,通常情况下使用系统默认的配置即可,大家要记住默认情况下团体名为public。
⑷利用配置好的Windows2000SNMP服务管理站和代理,利用snmputil工具完成SNMP操作,注意命令格式中的agent如果用127.0.0.1表示本主机,如果是其他IP地址,则表示其他机器。
Snmputil是一个命令行下的软件,使用语法如下:
snmputil[get|getnext|walk]agentcommunityoid[oid...]
或snmputiltrap
(5)在检索命令中直接指明对象实例的标识符:
GetRequest(udpInDatagrams.0,udpNoPorts.0,
udpInErrors.0,udpOutDatagrams.0)
可以预期得到下面的响应:
GetResponse(udpInDatagrams.0=?
udpNoPorts.0=?
udpInErrors.0=?
udpOutDatagrams.0=?
)
请写出snmputil的命令格式,并记录实验结果。
(6)用GetNext命令检索UDP组中的4个值,直接指明对象标识符:
GetNextRequest(udpInDatagrams.0,udpNoPorts.0,
udpInErrors.0,udpOutDatagrams.0)
得到的响应:
GetResponse(udpNoPorts.0=?
udpInErrors.0=?
udpOutDatagrams.0=?
udp.udpTable.udpEntry.udpLocalAddress.0.0.0.0.161=
?
),请写出snmputil的命令格式,记录实验结果,并解释结果产生的原因。
(7)如果对udpNoPorts的访问标示符错误,则响应会不同。
发出同样的命令:
GetRequest(udpInDatagrams.0,udpNoPorts.0,
若用命令
snmputil
get
127.0.0.1public.1.3.6.1.2.1.7.1.0.1.3.6.1.2.1.7.2.1.1.3.6.1.2.1.7.3.0.1.3.6.1.2.1.7.4.0
得到的响应是什么,解释实验响应的结果。
(8)发出一个命令:
GetNextRequest(udpInDatagrams.2)
则得到的响应是什么,请写出snmputil的命令格式,并记录实验结果。
(9)GetNext的检索未知对象的特性可以发现MIB的结构,例如管理站不知道udp组有哪些变量,先试着发出命令:
GetNextRequest(udp)
请写出snmputil的命令格式,记录实验结果,并解释结果产生的原因。
(10)GetNext可用于有效地搜索表对象,并且方便的搜索每一行的内容,假定管理站不知道该表的行数而想检索整个表,则可以连续使用GetNext命令:
GetNextRequest(ipRouteDest,ipRouteMetric1,ipRouteNextHop)
要求能读到连续的三行内容。
请写出snmputil的命令格式,记录实验结果。
(注意:
由于每个计算机的IpRouteTable内容不同,上述的命令可能有所差异,请根据具体情况而定。
)
(11)说明下列每条snmputil命令钟walk操作响应的含义。
snmputilwalk127.0.0.1public.1.3.6.1.2.1.25.4.2.1.2
查询设备上所有正在运行的进程
snmputilwalk127.0.0.1public.1.3.6.1.4.1.77.1.2.25.1.1
查询计算机中的用户列表
snmputilwalk127.0.0.1public.1.3.6.1.2.1.25.6.3.1.2
snmputilwalk127.0.0.1public.1.3.6.1.2.1.1
遍历整个MIB-2的子树SYSTEM
(12)陷入是由代理向管理站发出的异步事件报告,不需要应答报文。
下面测试SNMP的自陷服务。
命令格式:
snmputiltrap(代理端)
snmputilget127.0.0.1liqiao1.1.0
观察屏幕的含义,有什么提示信息,记录实验结果,并解释原因?
注意:
要启用两个DOS命令窗口,而且必须在“SNMP服务属性”对话框中,将主机127.0.0.1添加为陷进目标
…
(13)测试冷启动自陷
保持snmputilTrap继续监听,然后停止snmp服务,再重新启动snmp服务,在陷阱窗口中将会收到代理的什么信息,记录实验结果并分析。
5、实验报告
要求认真书写实验报告,报告的内容包括:
实验目的、实验内容、实验步骤、实验结果等。
6
、思考问题:
(1)通过snmputil的使用,谈谈你对SNMP的主要操作有什么样的认识?
(2)SNMP使用UDP传送报文。
为什么不使用TCP?
(3)为什么SNMP的管理进程使用探询掌握全网状态属于正常情况,而代理进程用陷阱向管理进程报告属于较少发生的异常情况?
实验二网络管理软件及原型系统的实现
掌握网络管理软件的初步使用,并能运用管理应用程序的设计方法,能够利用软件开发包和编程语言实现网络管理软件原型系统。
能够理论结合实践,利用编程工具,开发网络管理应用。
编程开发环境、Windows2000/xp系统网络环境或单机
6学时上机。
4、实验内容
安装使用网络管理软件,并要求利用WinSNMPAPI函数、HPSNMP++软件包、AdventNetSNMPAPI4等任一种第三方软件包,开发网络管理软件原型系统,能够实现一定的网络管理功能。
具体语言可以是C++、Java等语言。
要求能够正确读取MIB库内容,并能实现get、getnext、set等操作。
并给出实现功能的代码,各个模块之间的关系说明,以及代码的注释。
(1)请你说明各个网络管理软件的特点和主要功能有哪些?
(1)在开发网络管理软件原型系统的过程中遇到了那些错误,怎么解决?
(2)对于自己完成的软件功能哪些方面还有不足,有待功能继续完善?
答:
主要应具备的五大功能:
配置管理,性能管理,故障管理,安全管理,计费管理,并提供图形化的用户界面.
大型的有HPOPENVIEW,SUNNETMager,IBMtivoliNetviiew
中小型:
ciscoworks2000ciscoworks2000forwindows
特点:
HPOPENVIEW网管软件NNM以其强大的功能,先进的技术,多平台适应性,在全球网管领域得到了广泛的应用。
IBMtivoliNetviiew扩展了传统的网络管理特性,保证关键业务系统的可用性并提供更快速的系统问题解决特性。
高度实用性:
高度灵活性:
高度自动化:
高安全性:
易于使用的界面
SUNNETMager分布式管理:
协同管理:
全面支持SNMP:
具有较强的安全性:
用户工具:
应用程序接口
实验代码:
Snmpget:
importjava.lang.*;
importjava.util.*;
import.*;
importcom.adventnet.snmp.snmp2.*;
importcom.adventnet.snmp.snmp2.usm.*;
publicclasssnmpget
{
publicstaticvoidmain(Stringargs[])
{
//Takecareofgettingoptions
Stringusage=
"
\nsnmpget[-d][-vversion(v1,v2,v3)][-ccommunity]\n"
+
[-pport][-rretries][-ttimeout][-uuser]\n"
[-aauth_protocol][-wauth_password]\n"
[-spriv_password][-ncontextName][-icontextID]\n"
[-DB_driverdatabase_driver]\n"
[-DB_urldatabase_url]\n"
[-DB_usernamedatabase_username]\n"
[-DB_passworddatabase_password]\n"
[-ppprivProtocol(DES/AES-128/AES-192/AES-256/3DES)]\n"
hostOID[OID]...\n"
;
Stringoptions[]=
{
-d"
"
-c"
-wc"
-p"
-r"
-t"
-m"
-v"
-u"
-a"
-w"
-s"
-n"
-i"
-DB_driver"
-DB_url"
-DB_username"
-DB_password"
-pp"
};
Stringvalues[]=
None"
null,null,null,null,null,"
null,null,null,null,null,null,null,
null,null,null,null,null
ParseOptionsopt=newParseOptions(args,options,values,usage);
if(opt.remArgs.length<
2)
opt.usage_error();
}
//StartSNMPAPI
SnmpAPIapi;
api=newSnmpAPI();
if(values[0].equals("
Set"
))
api.setDebug(true);
//Opensession
SnmpSessionsession=newSnmpSession(api);
//setremoteHost
intPORT=3;
SnmpPDUpdu=newSnmpPDU();
UDPProtocolOptionsudpOpt=newUDPProtocolOptions();
udpOpt.setRemoteHost(opt.remArgs[0]);
if(values[PORT]!
=null)
try
{
udpOpt.setRemotePort(Integer.parseInt(values[PORT]));
}
catch(Exceptionexp)
System.out.println("
Invalidport:
"
+values[PORT]);
System.exit
(1);
pdu.setProtocolOptions(udpOpt);
SetValuessetVal=newSetValues(pdu,values);
if(setVal.usage_error)
Stringdriver=values[14];
Stringurl=values[15];
Stringusername=values[16];
Stringpassword=values[17];
if(driver!
=null||url!
=null||
username!
=null||password!
if(pdu.getVersion()!
=3)
System.out.println(
"
DatabaseoptioncanbeusedonlyforSNMPv3."
);
if(driver==null)
TheDatabasedrivernameshouldbegiven."
if(url==null)
TheDatabaseURLshouldbegiven."
api.setV3DatabaseFlag(true);
api.initJdbcParams(driver,url,username,password);
UnabletoEstablishDatabaseConnection."
PleasecheckthedriverNameandurl."
//BuildGetrequestPDU
//SnmpPDUpdu=newSnmpPDU();
pdu.setCommand(api.GET_REQ_MSG);
//addOIDs
for(inti=1;
i<
opt.remArgs.length;
i++)
SnmpOIDoid=newSnmpOID(opt.remArgs[i]);
if(oid.toValue()==null)
System.err.println("
InvalidOIDargument:
+opt.remArgs[i]);
else
pdu.addNull(oid);
try
//Opensession
session.open();
catch(SnmpExceptione)
System.err.println("
Erroropeningsession:
"
+e.getMessage());
System.exit
(1);
if(pdu.getVersion()==SnmpAPI.SNMP_VERSION_3)
pdu.setUserName(setVal.userName.getBytes());
USMUtils.init_v3_parameters(
setVal.userName,
null,
setVal.authProtocol,
setVal.authPassword,
setVal.privPassword,
udpOpt,
session,
false,
setVal.privProtocol);
catch(SnmpExceptionexp)
System.out.println(exp.getMessage());
pdu.setContextName(setVal.contextName.getBytes());
pdu.setContextID(setVal.contextID.getBytes());
}
SnmpPDUres_pdu=null;
//SendPDUandreceiveresponsePDU
res_pdu=session.syncSend(pdu);
SendingPDU"
if(res_pdu==null)
//timeout
System.out.println("
Requesttimedoutto:
+opt.remArgs[0]);
UDPProtocolOptionsudpOptions=
(UDPProtocolOptions)res_pdu.getProtocolOptions();
Stringres="
ResponsePDUreceivedfrom"
udpOptions.getRemoteAddress()+"
."
//printandexit
if(res_pdu.getVersion()<
3)
res=res+"
Community="
+res_pdu.getCommunity()+"
System.out.println(res);
//Checkforerrorinresponse
if(res_pdu.getErrstat()!
=0)
System.err.println(res_pdu.getError());
else
//printtheresponsepduvarbinds
System.out.println(res_pdu.printVarBinds());
//closesession
session.close();
//stopapithread
api.close();
}
Snmpgetnext:
publicclasssnmpgetnext
//Takecareofgettingoptions
Stringusage=
snmpgetnext[-d][-vversion(v1,v2,v3)]\n"
[-ccommunity][-pport][-rretries]\n"
[-ttimeout][-uuser][-aauth_protocol]\n"
[-wauth_password][-spriv_password]\n"
[-ncontextName][-icontextID]\n"
"
Stringoptions[]=
"
};
Stringvalues[]=