一、准备工作
1、安装Microsoft Visual Studio 2005,其中Visual C++为必选组件
2、安装Active Perl解析器至C:/usr目录下
该步骤必须执行,否则在后期执行配置操作时,会提示没有安装perl解析器的错误,从而无法自动配置。
二、编译NET-SNMP源文件(基于readme.win32中的Microsoft Visual C++ - Workspace - Building部分)
1、配置默认安装路径,打开net-snmp-5.4/win32/net-snmp/net-snmp-config.h,将第8行改为#define INSTALL_BASE "C:/usr"
在net-snmp-config.h文件中,所有的路径都是使用UNIX下的/符号,如果将其改为Windows下的/符号的话,反而会在后期配置时出现路径错误。
2、在Visual Studio 2005中打开net-snmp-5.4/win32/win32.dsw,点击“全部都是”转换工作空间。
3、单击菜单栏的“生成”下的“配置管理器”,将活动解决方案配置从Debug改成release。此处也可以不修改,但是在后面的安装过程中,需要加入“-debug”参数。(后续内容以不修改为例)。
4、在右侧解决方案资源管理器中,依次对libagent、libhelpers、libnetsnmptrapd、libsnmp、netsnmpmibs这五个项目单击鼠标右键,选择“重新生成”。
5、单击菜单栏的“生成”下的“生成解决方案”。
6、单击菜单栏的“生成”下的“配置管理器”,在“项目上下文中”去掉对libagent、libhelpers、libnetsnmptrapd、libsnmp、netsnmpmibs这五个项目的选择,其余不变。
7、单击菜单栏的“生成”下的“重新生成”。
8、编译结束之后,单击菜单栏的“文件”下的“关闭解决方案”,退出。
三、安装NET-SNMP(基于readme.win32中的Microsoft Visual C++ - Workspace - Installing部分)
1、打开net-snmp-5.4/win32/install-net-snmp.bat,检查第12行是否为set INSTALL_BASE="c:/usr",不是的话请改成这个。
2、打开命令提示符窗口,进入net-snmp-5.4/win32目录下,运行 install-net-snmp.bat -debug 安装。
如果编译的时候将活动解决方案配置改成了release的话,直接运行install-net-snmp.bat即可。 3、拷贝net-snmp-5.4/win32/local/*.bat文件至C:/usr/bin目录下。
该步骤本应该在执行批处理的时候自动执行,但实际上这些文件并没有被拷贝过去,所以我们必须手动进行,否则无法配置。
四、检查文件是否完整,在C:/usr/bin目录下应该存在下列22个文件
mib2c.bat、snmpconf.bat、traptoemail.bat、snmpconf、snmpbulkget.exe、snmpbulkwalk.exe、snmpd.exe、snmpdelta.exe、snmpdf.exe、snmpget.exe、snmpgetnext.exe、snmpnetstat.exe、snmpset.exe、snmpstatus.exe、snmptable.exe、snmptest.exe、snmptranslate.exe、snmptrap.exe、snmptrapd.exe、snmpusm.exe、snmpvacm.exe、snmpwalk.exe
五、配置NET-SNMP(基于readme.win32中的Configuring Net-SNMP部分)
1、打开C:/usr/bin/snmpconf.bat,检查第2行是否为set MYPERLPROGRAM=c:/usr/bin/snmpconf,不是的话请改成这个。
2、打开C:/usr/bin/snmpconf,查找所有/usr/local/并替换为C:/usr/。
该步骤必须执行,snmpconf中的文件路径采用的是UNIX下的/usr/local/,这里必须改为Windows下的C:/usr/,但/符号仍然保持UNIX下的/符号,不用改成windows下的/符号,否则运行时会提示无法创建路径。
3、运行 snmpconf -i
4、选择 3: snmp.conf
5、选择 3: Textual mib parsing
6、选择 1: Specifies directories to be searched for mibs.
7、输入 c:/usr/share/snmp/mibs
8、输入 finished回车 finished回车 quit回车,正常退出。
9、将C:/usr/share/snmp目录下的snmp.conf拷贝至C:/usr/etc/snmp目录。
10、拷贝net-snmp-5.4/win32/EXAMPLE.conf.win32至C:/usr/etc/snmp目录下,并改名snmpd.conf
11、打开刚刚拷贝的snmpd.conf,将第70行改为com2sec local localhost public
原文件中71行的COMMUNITY部分必须被改成public,COMMUNINTY只是个例子,不修改的话后期无法正常执行。
12、删除或者注释掉第71行。
理由与上一条相同,NETWORK/24也只是个例子。
六、运行NET-SNMP
1、打开一个命令提示符窗口,运行 snmpd -f -Le -d
2、提示如下则正确运行:
NET-SNMP version 5.4
3、新开一个命令行窗口,运行 snmpget -c public -v 2c localhost system.sysUpTime.0
4、当前窗口提示如下:
SNMPv2-MIB::sysUpTime.0 = Timeticks: (8279) 0:01:22.79
5、原命令行窗口提示如下:
Received 41 bytes from 127.0.0.1
0000: 30 27 02 01 01 04 06 70 75 62 6C 69 63 A0 1A 02 0'.....public...
0016: 02 0F BC 02 01 00 02 01 00 30 0E 30 0C 06 08 2B .........0.0...+
0032: 06 01 02 01 01 03 00 05 00 .........
Received SNMP packet(s) from 127.0.0.1
GET message
-- SNMPv2-MIB::sysUpTime.0 Sending 43 bytes to 127.0.0.1
0000: 30 29 02 01 01 04 06 70 75 62 6C 69 63 A2 1C 02 0).....public...
0016: 02 0F BC 02 01 00 02 01 00 30 10 30 0E 06 08 2B .........0.0...
0032: 06 01 02 01 01 03 00 43 02 20 57 .......
七、出错情况
参考http://www.diybl.com/course/webjsh/osgl/20071226/93877.html
1 通过命令行窗口运行snmpd -f -Le -d,提示信息:
Error opening specified endpoint ""
Server Exiting with code 1
解决:windows系统的snmp服务需要关闭,因为UDP端口已经被占用。代理默认的端口都是162,也可以通过配置进行修改。