admin 管理员组文章数量: 887017
很多文章都在介绍如何加载安装net-snmp,但是那些篇幅要么过于久远(发布时间为2年前以上),要么就是介绍的不够详细(比如准备工作,需要用到那些库或者工具等等),要么就是……
我现在主要介绍的win10系统安装最新版本并且适用于“Building With Visual Studio 2005 Express”的操作,就是用类似vs2005(比如VS2010,VS2019)开发工具的开发net-snmp,首先要下载好VS019,这个很简单自己去搜索如何在win10先下载安装VS2019就出来文章一大堆,我是花费了一晚上的时间才把vs2019下载安装好,当然电脑在下载我在睡觉觉。
如果想要安装openssl:http://slproweb/products/Win32OpenSSL.html;注意要下载不带Light的版本,就是要下载比较大的包,我建议64位的和32位的最好都要下载一下,因为电脑是64位系统的就用64位的。
在介绍安装之前首先要做好准备工作:
1.安装activatestate工具
该工具的官网为:https://www.activestate/products/platform/state-tool/
安装命令为:
powershell -Command "& $([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://platform.activestate/dl/cli/install.ps1')))"
这个命令是需要在win10系统的终端(打开终端方法:win+R,输入cmd,敲回车就打开了)上运行的,直接敲回车就可以开始该工具的安装了,记住一定要联网。
2.安装activateperl工具
该工具的官网为:https://www.activestate/products/perl/downloads/
安装命令为:
powershell -Command "& $([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://platform.activestate/dl/cli/install.ps1'))) -activate-default ActiveState/Perl-5.32"
这个命令是需要在win10系统的终端(打开终端方法:win+R,输入cmd,敲回车就打开了)上运行的,直接敲回车就可以开始该工具的安装了,记住一定要联网。该命令安装的perl-5.32版本的。
注意(真的需要注意了):安装路径最好是C:\ActiveState\Perl-5.32下面;更加要注意的是“C:\ActiveState\Perl-5.32”中的“ActiveState\Perl-5.32”这个一定要相连,这两个是一个整体,不要抛弃任何一个,并且“Perl-5.32”一定要在“ActiveState” 目录下面。因为我刚开始安装的时候当时能用,但是过来一天就用不了了,有重新开始安装,每次安装都花费好久好久(13.5兆大小花费了至少两小时)。
3.这一步也是很关键的,要想避免重新操作第2步,就好好的看这一步:
当第二步安装perl完成以后,重新打开一个终端,输入perl -v,若是显示perl的版本信息就证明已经安装好了perl,但是你现在只是安装好了perl,还不知道怎么用它。终端保持着,在终端进入到perl的安装目录C:\ActiveState\Perl-5.32下面,然后输入“state activate”,这一步就是激活了perl,然后就在这里面运行perl的一些脚本,记住如果不想运行了一定要输入“exit”退出perl的运行界面,若是直接关闭终端界面,而没有退出,下次就没有办法运行perl了,只能重走第二步了。
简单操作步骤总结:
(1)打开终端,cd 到perl安装目录“C:\ActiveState\Perl-5.32”
(2)输入“state activate”(注意这里其实是state activate ActiveState\Perl-5.32)
这就是为什么安装路径中“ActiveState\Perl-5.32”密不可分的因素,因为到了“C:\ActiveState\Perl-5.32”这个目录下,所以可以省略后面的项目名称;可参考网址:https://docs.activestate/platform/state/create-project/里面的“Installing / Importing Packages”和“Activating Your Project”章节
(3)不用perl工具了,输入“exit”退出
其中相关经验教训可参考网址:
https://www.activestate/resources/product-demos/activestate-platform-demo-perl-cpanfile/
该链接是介绍安装完activatestate工具以后,如何创建perl的运行环境,可惜只有视频,我也看不了(因为网速太差,视频打不开,有能打开的小伙伴请一定打开仔细看一看,分享一下),
https://www.activestate/resources/product-demos/activestate-platform-demo-state-tool-activate-projects/该网址开始用activatestate工具创建完perl的运行环境以后,介绍怎么使安装的perl项目生效。两个视频都要看,避免perl老是不能用,然后重回第二步。
4.activatestate工具,activateperl工具,vs2019都安装好了,接下来就是安装net-snmp了
(1)首先从一下网址下载net-snmp-5.9.1.zip,然后解压
https://sourceforge/projects/net-snmp/files/net-snmp/5.9.1/
(2)按照一下网址操作进行安装:
http://www-snmp/wiki/index.php/Using_the_command_line_and_nmake这个是官方的安装VS005系列的操作。
简单介绍一下:
1.打开终端,输入“cmd /V:ON /E:ON”
2.进入这个路径“C:\Program Files\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\”,如果是执行这个失败,可以执行vcvars32.bat(电脑是32位的执行这个)或者vcvars64.bat(电脑是64位的执行这个)或者vcvarsall.bat amd64(vcvarsall.bat后面都要加一个参数),我的电脑是64位所以我就用了执行了vcvars64.bat。
3.然后进入到net-snmp-5.9.1.zip的解压目录“C:\net-snmp\win32\build.bat”(我的解压目录是这个),执行build.bat就可以了,然后直接按照默认的安装就行,直接输入F回车,最后默认的安装路径是C:/usr下面;就保持这个路径就可以了。执行build.bat出现下面界面:
其中用红色圆圈标记的都是要enabled(其中选项8.Install Perl Modules也可以选中的)的,若第一个OpenSSL support为enabled,则要保证2和3的路径正确。全部选项设置好以后,就可以按F,安装了,结果界面如下图所示:
出现这个结果证明已经安配置安装成功了,但是只是安装了一部分,剩下的部分需要再次执行nmake install_devel进行安装,这样就大功告成了。
如果打开7.Perl Mdules就会报下面的错误(这个问题我不会解决)
The perl interpreter has been built with gcc instead of MSVC. Giving up.
如果打开11.IPv6 transports就会报下面的错误,(这个问题我不会解决)
netsnmpagent.lib(snmp_vars.obj) : error LNK2019: 无法解析的外部符号 netsnmp_udp6_agent_config_tokens_register,函数 init_agent 中引用了该符号
netsnmpmibs.lib(vacm_conf.obj) : error LNK2019: 无法解析的外部符号 netsnmp_udp6_parse_security,函数 vacm_create_simple 中引用了该符号
netsnmpmibs.lib(vacm_conf.obj) : error LNK2019: 无法解析的外部符号 netsnmp_udp6_getSecName,函数 vacm_check_view_contents 中引用了该符号
netsnmpmibs.lib(vacm_conf.obj) : error LNK2001: 无法解析的外部符号 netsnmp_UDPIPv6Domain
netsnmpmibs.lib(vacm_conf.obj) : error LNK2001: 无法解析的外部符号 netsnmp_TCPIPv6Domain
..\bin\.\release\snmptrapd.exe : fatal error LNK1120: 5 个无法解析的外部命令
NMAKE : fatal error U1077: ??"D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30037\bin\HostX64\x64\link.exe"??: ???ش??롰0x460??
Stop.
NMAKE : fatal error U1077: ??"D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30037\bin\HostX64\x64\nmake.EXE"??: ???ش??롰0x2??
Stop.
后续还有什么不清楚的可以私聊,加上其他选项也老是报错。所以只安装了最简单的。
最后在介绍一点,用vs2019开发的时候,如何加载snmp的头文件和库,前面我有篇文章已经介绍了,接下来我还要补充一点:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <winsock2.h>#pragma comment(lib,"netsnmp.lib")
#pragma comment(lib,"netsnmpagent.lib")
#pragma comment(lib,"netsnmpmibs.lib")
#pragma comment(lib,"WS2_32.lib")
这个要包含的头文件和库,其中头文件winsock2.h和库WS2_32.lib都是必不可少的,要不然会报错。
下面附上一个测试代码,直接复制粘贴就可以运行,如果出现打印结果就说明你已经在用net-snmp的库了,但是应该不会出现结果因为服务还没有起来,若需要启动服务还需要配置一系列的snmp.conf文件,其中配置这些文件都可以通过/usr/bin/snmpconf这个脚本文件来实现,关于这个脚本的介绍在这个网址:http://www-snmp/docs/man/snmpconf.html。只可惜我按照要求运行了脚本(命令:snmpconf -g basic_setup)以后却总是出现报错界面,所以就没有办法配置了:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <winsock2.h>#pragma comment(lib,"netsnmp.lib")
#pragma comment(lib,"netsnmpagent.lib")
#pragma comment(lib,"netsnmpmibs.lib")
#pragma comment(lib,"WS2_32.lib")int main()
{
struct snmp_session session, * ss;
struct snmp_pdu* pdu;
struct snmp_pdu* response;oid anOID[MAX_OID_LEN];
size_t anOID_len = MAX_OID_LEN;struct variable_list* vars;
int status;/*first Initialize the SNMP library*/
//init_snmp("snmpapp");
/*Initialize a "session" that defines who we're going to talk to */
snmp_sess_init(&session); /* set up defaults */
session.peername = (char *)"test-snmp";
/* set up the authentication parameters for talking to the server */#ifdef DEMO_USE_SNMP_VERSION_3
/* Use SNMPv3 to talk to the experimental server */
/* set the SNMP version number */
session.version = SNMP_VERSION_3;/* set the SNMPv3 user name */
session.securityName = strdup("MD5User");
session.securityNameLen = strlen(session.securityName);/* set the security level to authenticated, but not encrypted */
session.securityLevel = SNMP_SEC_LEVEL_AUTHNOPRIV;/* set the authentication method to MD5 */
session.securityAuthProto = usmHMACMD5AuthProtocol;
session.securityAuthProtoLen = sizeof(usmHMACMD5AuthProtocol) / sizeof(oid);
session.securityAuthKeyLen = USM_AUTH_KU_LEN;/* set the authentication key to a MD5 hashed version of our passphrase "The Net-SNMP Demo Password" (which must be at least 8 characters long) */
if (generate_Ku(session.securityAuthProto,session.securityAuthProtoLen,
(u_char*)our_v3_passphrase, strlen(our_v3_passphrase),
session.securityAuthKey,
&session.securityAuthKeyLen) != SNMPERR_SUCCESS) {
snmp_perror(argv[0]);
snmp_log(LOG_ERR,"Error generating Ku from authentication pass phrase. \n");
exit(1);
}#else /* we'll use the insecure (but simpler) SNMPv1 */
/* set the SNMP version number */
session.version = SNMP_VERSION_1;/* set the SNMPv1 community name used for authentication */
sessionmunity = (u_char *)"demopublic";
sessionmunity_len = strlen((char *)sessionmunity);#endif /* SNMPv1 */
printf("i i am snmp\n");
printf("hello world i i am snmp\n");
return 0;
}
有不足之处,还请私聊或者在下面评论指出,一起研发,共同进步。
版权声明:本文标题:win10安装net-snmp,vs2019 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1728410618h1240043.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论