Chinaunix首页 | 论坛 | 博客
  • 博客访问: 95506
  • 博文数量: 15
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 158
  • 用 户 组: 普通用户
  • 注册时间: 2015-01-29 17:33
文章存档

2016年(4)

2015年(11)

我的朋友

分类: 嵌入式

2015-10-13 11:07:43

SNMP移植记录和注意点
首先:环境介绍。
我的主机是win7系统:ip:192.168.16.118(这个不太重要)
我的虚拟机:ip:192.168.16.66(这个作为snmp的主控,要写进配置文件可以在这台机器上查询板子上的snmp各OID)
我的板子:ip:192.168.16.110(这个作为snmp的被控也不重要)
注意:三个网址必须在一个网段,否则不能访问


1:下载源码,地址,我下载的是net-snmp-5.7.1.tar.gz
2:解压:tar -zxvf net-snmp-5.7.1.tar.gz
3:进入源码目录 : ./net-snmp-5.7.1
4:进行配置:
这里是移植成功的关键,我的参数是
./configure --prefix=/usr/local/net-snmp --build=i386-linux --host=arm-xilinx-linux-gnueabi --disable-ipv6 --with-endianness=little --disable-manuals --disable-ucd-snmp-compatibility --enable-as-needed --disable-embedded-perl --without-perl-modules --disable-snmptrapd-subagent --disable-applications --disable-scripts --with-default-snmp-version="2" --with-sys-contact="wuwq@avit.org" --with-sys-location="china" --with-logfile="/usr/nand/net-snmp/snmpd.log" --with-persistent-directory="/usr/local/net-snmp" 
这句话,网上的解说很多,我只是简单介绍下我用到的比较重要的部分,
--prefix=安装目录
--build=开发板的体系架构
--host=主机使用的交叉编译器(我用的是z7000的板子,交叉编译器是arm-xilinx-linux-gnueabi)
--disable-ipv6:不使能ipv6,(你也可以不要这个)
--with-endianness=指定大小端模式(你也可以不要这个)
--with-logfile=日志文件的地址(这个很重要,因为启动snmp后出现一切问题都要查看日志)
--with-sys-contact=联系方式,这里是你的邮箱
--with-default-snmp-version=默认的版本,这里是2(目前snmp共有3个版本)
 --with-sys-location=地点(这里是中国)
5:配置完后要进型编译,链接等,我们需要以下命令
  make LDFLAGS="-static"(如果你使用动态库的话,可以直接make,但是在开发板上可能会找不到你的库,或者库的依赖很头疼)
6:最后是安装,命令是
make install
7:不要以为这样就可以了,我们是移植,不是简单安装,首先进入安装目录
cd /usr/local/
在这里可以看到我们要的文件夹net-snmp,先压缩它,放到板子上,这个过程自己做
 tar -zcvf net-snmp.tar.gz net-snmp//如果有权限问题就加sudo在命令前面
通过tftp下载到板子里
8:在板子里把net-snmp。tar.gz放到、usr/local目录下解压
tar -zxvf net-snmp.tar.gz
9:启动snmp服务
/usr/local/net-snmp/sbin/snmpd -c /usr/local/net-snmp/share/snmp/snmpd.conf -M /usr/loccal/net-snmp/share/snmp/mibs
10:如果你不想在snmp命令前面加入路径就修改环境变量
vi /etc/profile
看到下面这一行
export PATH=/sbin:/usr/sbin:/bin:/usr/bin:
改为
export PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/net-snmp/sbin:/usr/local/net-snmp/bin:
11:接下来是snmp的配置文件
将下载的源码中的net-snmp-5.7.1\python\netsnmp\tests目录下的snmp.conf拷贝到板子的/usr/local/net-snmp/share/snmp/目录下
12:现在来修改配置文件
在配置文件中加入以下三行
master agentx  
rocommunity public  
rwcommunity public 
它表示我们的snmp是作为主代理,因为我们的目的是移植后写出子代理程序,如果你不需要子代理,这句可以不要
接下来修改这两句
#       sec.name  source          community                                    
com2sec local     localhost       public                                       
com2sec mynetwork 192.168.16.110      public 
这表示我的开发板有snmp程序且只准许本机(即开发板),和主机(我的win7下的虚拟机)来访问
其他不变,当然最后我会把我的配置文件和一些其他东西打包给大家。
13:修改好配置文件后运行snmp程序,命令如下
/usr/local/arm_netsnmp/sbin/snmpd -d -c /usr/local/arm_netsnmp/share/snmp/snmpd.conf -M /usr/snmp/arm_netsnmp/share/snmp/mibs
如果你加入了环境变量,则程序前面的路径可以不要,命令如下
snmpd -d -c /usr/local/arm_netsnmp/share/snmp/snmpd.conf -M /usr/snmp/arm_netsnmp/share/snmp/mibs
14:最后回到你的主机(虚拟机)上,输入
 snmpwalk -v 1 -c public 192.168.16.110(板子地址)
如果有很多东西出来的话表示你成功了
注:移植过程中可能出现的问题
Timeout: No Response from 192.168.16.55
答:可能是你的防火墙开了,linux下关闭防火墙命令如下(注意IP的修改)
sudo iptables -A INPUT -i eth0 -p udp -s 192.168.16.110 --dport 161 -j ACCEPT
sudo iptables -A INPUT -i eth0 -p udp -s 192.168.16.66 --dport 161 -j ACCEPT
如果这样还不行,请检查配置文件中IP的正确性
AVIT-HDE611-MIB:videopid.: Unknown Object Identifier ()
答:这表示没有你要查询的节点,或者你的节点没有放到搜索目录下,如果按照我的做法来做,搜索目录为/usr/local/net-snmp/share/snmp/mibs/
阅读(1760) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~