现在的位置: 首页 > 综合 > 正文

net-snmp(5.7.2)移植到arm

2019年05月30日 ⁄ 综合 ⁄ 共 9228字 ⁄ 字号 评论关闭

1.移植所需要的环境

ubuntu 10.4

Arm-linux-gcc:3.4.1

Net-snmp:v5.7.2

Target CPU:ok6410

2.配置net-snmp

(1)指定交叉编译器:arm-linux-gcc安装成功并已设置好环境变量。

export PATH=$PATH:.../tools/arm-linux/cc/bin
       

(2)配置net-snmp编译选项:

net-snmp-5.7.2.tar.gz可在官网(http://www.net-snmp.org/)上下载。

解压后进入net-snmp-5.7.2目录

       ./configure 

--build=i686-linux //编译平台

--host=arm-linux  //运行平台

 CC=arm-linux-gcc  //交叉编译器

--with-endianness=little //指定小端

--enable-mini-agent  //最小的SNMP(编译出来的SNMP比较小)

--with-install-prefix=/home/wfj/net-snmp //安装目录

--with-ar=arm-linux-ar //arm-linux-ar二进制工具用来管理文件

LDFLAGS="-static"//静态编译

各配置选项含义可以使用./configure –help来查看,可以添加自己需要的选项或者去掉不需要的选项。

 

    编译完有出现以下提示,一直按回车就行

    system contact information (root@):

    system Location (Unknown):

3.编译 make

出现.../bin/ld: cannot find lperl.

(1)根据错误准诉到bin/ld所在的文件夹,例如.../arm-none-linux/bin/ld.

(2)找到libperl.so所在文件

find /..../arm-none-linux -name libperl.so

(3)在(1)中的文件下建立一个链接libperl.so,链接到(2)找到的libperl.so

        如果仍然不OK,查看错误处看指定的lib位置,在该处建立libperl.so的链接:

        ln -s /home/jerry/project/..../libperl.so /usr/local/lib/libperl.so

       4.安装 make install

    编译得到的snmpd比较大,需要进行strip处理,使用arm-linux-strip snmpd处理后得到需要的snmpd文件。Snmpd在/home/wfj/net-snmp/usr/local/sbin目录下。

5.拷贝配置文件模板

将EXAMPLE.conf文件复制到/home/wfj/net-snmp/usr/local/share/snmp/,并重名为snmpd.conf 

#cp EXAMPLE.conf /home/wfj/net-snmp/usr/local/share/snmp/snmpd.conf

6.修改配置文件

#gedit /home/wfj/net-snmp/usr/local/share/snmp/snmpd.conf

找sec.name把原来

#       sec.name  source          community

com2sec local     localhost       COMMUNITY

com2sec mynetwork NETWORK/24      COMMUNITY

改为一下:

#       sec.name  source          community

#com2sec local     localhost  COMMUNITY

com2sec mynetwork 192.168.0.233      public

其中192.168.0.233是我开发板的IP

7.移植文件

在移植以前要确保有一下文件:

1./home/wfj/net-snmp/usr/local/net-snmp/sbin/目录下有snmpd进程

2./home/wfj/net-snmp/usr/local/net-snmp/share/snmp/目录下有snmpd.conf ,mibs

3./home/wfj/net-snmp/usr/local/net-snmp/bin目录下有net-snmp-config, snmpwalk, snmpget等

备注:snmpd,net-snmp-config,snmkwalk,snmpget等工具在移植以前,要先用arm-linux-strip压缩一下。

然后把snmpd拷贝到开发板的/usr/sbin中,snmpd.conf拷贝到开发板的/usr/local/share/snmp/中。Mibs目录及目录中的文件考到开发板的/usr/local/share/snmp目录下。开发板上没有的目录就自自己创建。

8.在开发板上运行snmp 

#snmpd -c /usr/local/share/snmp/snmpd.conf

会出现一下错误:

snmpd: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory

说明在开发板的lib文件夹中缺少libgcc_s.so.1文件,这时我们需要在交叉编译器中找到这个文件,然后拷贝到开发板的lib文件中。再一次运行snmpd -c /usr/local/share/snmp/snmpd.conf,就不会出现上面那种错误了。

备注:

1.原来snmpd.conf在/home/wfj/net-snmp/usr/local/net-snmp/share/snmp/snmpd.conf中,当传到开发/usr/local/share/snmp/板目录中时,需要在运行时用参数C来指定最新目录。

2.当snmpd进程运行时会在/var/net-snmp目录下创建一个snmpd.conf。

创建V3用户

# net-snmp-config  --create-snmpv3-user ↙

# 输入用户名(wangfajun)↙

# 输入authentication pass-phrase(验证)如12345678长度不小于8

# 输入encryption pass-phrase(加密)如12345678,直接回车则跟上面一样。

下图为操作截图:

NET-SNMP 在arm上的移植 - 星空海洋 - 星空海洋的博客

 

测试:

snmpget -v 3 -c authPriv -u wangfajun -A "12345678" -X "12345678" localhost sysUpTime.0

注意v3中authprotocal  MD5  SHA  Privprotocal  DES   AES

客户端能ping通运行snmpd进程的设备,但取不到值,可能是客户端防火墙问题,取消客户端防火墙试试。

测试V2

   1.  #snmpwalk -v 2c -c public 192.168.0.233 if

显示如下:

[root@WFJ6410]# snmpwalk -v 2c -c public 192.168.0.233 if

IF-MIB::ifIndex.1 = INTEGER: 1

IF-MIB::ifIndex.2 = INTEGER: 2

IF-MIB::ifDescr.1 = STRING: lo

IF-MIB::ifDescr.2 = STRING: eth0

IF-MIB::ifType.1 = INTEGER: softwareLoopback(24)

IF-MIB::ifType.2 = INTEGER: ethernetCsmacd(6)

IF-MIB::ifMtu.1 = INTEGER: 16436

IF-MIB::ifMtu.2 = INTEGER: 1500

IF-MIB::ifSpeed.1 = Gauge32: 10000000

IF-MIB::ifSpeed.2 = Gauge32: 100000000

IF-MIB::ifPhysAddress.1 = STRING: 

IF-MIB::ifPhysAddress.2 = STRING: 8:90:0:a0:90:90

IF-MIB::ifAdminStatus.1 = INTEGER: up(1)

IF-MIB::ifAdminStatus.2 = INTEGER: up(1)

IF-MIB::ifOperStatus.1 = INTEGER: up(1)

IF-MIB::ifOperStatus.2 = INTEGER: up(1)

IF-MIB::ifLastChange.1 = Timeticks: (0) 0:00:00.00

IF-MIB::ifLastChange.2 = Timeticks: (0) 0:00:00.00

IF-MIB::ifInOctets.1 = Counter32: 1200

IF-MIB::ifInOctets.2 = Counter32: 5542210

IF-MIB::ifInUcastPkts.1 = Counter32: 24

IF-MIB::ifInUcastPkts.2 = Counter32: 4359

IF-MIB::ifInNUcastPkts.1 = Counter32: 0

IF-MIB::ifInNUcastPkts.2 = Counter32: 0

IF-MIB::ifInDiscards.1 = Counter32: 0

IF-MIB::ifInDiscards.2 = Counter32: 0

IF-MIB::ifInErrors.1 = Counter32: 0

IF-MIB::ifInErrors.2 = Counter32: 0

IF-MIB::ifInUnknownProtos.1 = Counter32: 0

IF-MIB::ifInUnknownProtos.2 = Counter32: 0

IF-MIB::ifOutOctets.1 = Counter32: 1200

IF-MIB::ifOutOctets.2 = Counter32: 290630

IF-MIB::ifOutUcastPkts.1 = Counter32: 24

IF-MIB::ifOutUcastPkts.2 = Counter32: 1733

IF-MIB::ifOutNUcastPkts.1 = Counter32: 0

IF-MIB::ifOutNUcastPkts.2 = Counter32: 0

IF-MIB::ifOutDiscards.1 = Counter32: 0

IF-MIB::ifOutDiscards.2 = Counter32: 0

IF-MIB::ifOutErrors.1 = Counter32: 0

IF-MIB::ifOutErrors.2 = Counter32: 0

IF-MIB::ifOutQLen.1 = Gauge32: 0

IF-MIB::ifOutQLen.2 = Gauge32: 0

IF-MIB::ifSpecific.1 = OID: SNMPv2-SMI::zeroDotZero

IF-MIB::ifSpecific.2 = OID: SNMPv2-SMI::zeroDotZero

[root@WFJ6410]# snmpget -v 2c -c public 192.168.0.233 system.sysName.0

显示如下:

SNMPv2-MIB::sysName.0 = STRING: WFJ6410

其他的测试如下:

[root@WFJ6410]# snmpwalk -v 1 -c public 192.168.0.233 .1.3.6.1.4.1.2021.8

SNMPv2-SMI::enterprises.2021.8.1.1.1 = INTEGER: 1

SNMPv2-SMI::enterprises.2021.8.1.1.2 = INTEGER: 2

SNMPv2-SMI::enterprises.2021.8.1.2.1 = STRING: "echotest"

SNMPv2-SMI::enterprises.2021.8.1.2.2 = STRING: "echotest"

SNMPv2-SMI::enterprises.2021.8.1.3.1 = STRING: "/bin/echo hello world"

SNMPv2-SMI::enterprises.2021.8.1.3.2 = STRING: "/bin/echo hello world"

SNMPv2-SMI::enterprises.2021.8.1.100.1 = INTEGER: 0

SNMPv2-SMI::enterprises.2021.8.1.100.2 = INTEGER: 0

SNMPv2-SMI::enterprises.2021.8.1.101.1 = STRING: "hello world"

SNMPv2-SMI::enterprises.2021.8.1.101.2 = STRING: "hello world"

SNMPv2-SMI::enterprises.2021.8.1.102.1 = INTEGER: 0

SNMPv2-SMI::enterprises.2021.8.1.102.2 = INTEGER: 0

SNMPv2-SMI::enterprises.2021.8.1.103.1 = ""

SNMPv2-SMI::enterprises.2021.8.1.103.2 = ""

[root@WFJ6410]# snmpwalk -v 1 -c public 192.168.0.233 .1.3.6.1.4.1.2021.2

SNMPv2-SMI::enterprises.2021.2.1.1.1 = INTEGER: 1

SNMPv2-SMI::enterprises.2021.2.1.1.2 = INTEGER: 2

SNMPv2-SMI::enterprises.2021.2.1.1.3 = INTEGER: 3

SNMPv2-SMI::enterprises.2021.2.1.2.1 = STRING: "mountd"

SNMPv2-SMI::enterprises.2021.2.1.2.2 = STRING: "ntalkd"

SNMPv2-SMI::enterprises.2021.2.1.2.3 = STRING: "sendmail"

SNMPv2-SMI::enterprises.2021.2.1.3.1 = INTEGER: 0

SNMPv2-SMI::enterprises.2021.2.1.3.2 = INTEGER: 0

SNMPv2-SMI::enterprises.2021.2.1.3.3 = INTEGER: 1

SNMPv2-SMI::enterprises.2021.2.1.4.1 = INTEGER: 0

SNMPv2-SMI::enterprises.2021.2.1.4.2 = INTEGER: 4

SNMPv2-SMI::enterprises.2021.2.1.4.3 = INTEGER: 10

SNMPv2-SMI::enterprises.2021.2.1.5.1 = INTEGER: 0

SNMPv2-SMI::enterprises.2021.2.1.5.2 = INTEGER: 0

SNMPv2-SMI::enterprises.2021.2.1.5.3 = INTEGER: 0

SNMPv2-SMI::enterprises.2021.2.1.100.1 = INTEGER: 1

SNMPv2-SMI::enterprises.2021.2.1.100.2 = INTEGER: 0

SNMPv2-SMI::enterprises.2021.2.1.100.3 = INTEGER: 1

SNMPv2-SMI::enterprises.2021.2.1.101.1 = STRING: "No mountd process running."

SNMPv2-SMI::enterprises.2021.2.1.101.2 = ""

SNMPv2-SMI::enterprises.2021.2.1.101.3 = STRING: "Too few sendmail running (# = 0)"

SNMPv2-SMI::enterprises.2021.2.1.102.1 = INTEGER: 0

SNMPv2-SMI::enterprises.2021.2.1.102.2 = INTEGER: 0

SNMPv2-SMI::enterprises.2021.2.1.102.3 = INTEGER: 0

SNMPv2-SMI::enterprises.2021.2.1.103.1 = ""

SNMPv2-SMI::enterprises.2021.2.1.103.2 = ""

SNMPv2-SMI::enterprises.2021.2.1.103.3 = ""

[root@WFJ6410]# snmpwalk -v 1 -c public 192.168.0.233 system

SNMPv2-MIB::sysDescr.0 = STRING: Linux WFJ6410 3.0.1 #1 Thu May 24 18:59:17 CST 2012 armv6l

SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.8072.3.2.10

SNMPv2-MIB::sysUpTime.0 = Timeticks: (10396) 0:01:43.96

SNMPv2-MIB::sysContact.0 = STRING: Me <me@somewhere.org>

SNMPv2-MIB::sysName.0 = STRING: WFJ6410

SNMPv2-MIB::sysLocation.0 = STRING: Right here, right now.

SNMPv2-MIB::sysORLastChange.0 = Timeticks: (32) 0:00:00.32

SNMPv2-MIB::sysORID.1 = OID: SNMPv2-MIB::snmpMIB

SNMPv2-MIB::sysORID.2 = OID: TCP-MIB::tcpMIB

SNMPv2-MIB::sysORID.3 = OID: IP-MIB::ip

SNMPv2-MIB::sysORID.4 = OID: UDP-MIB::udpMIB

SNMPv2-MIB::sysORID.5 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup

SNMPv2-MIB::sysORID.6 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance

SNMPv2-MIB::sysORID.7 = OID: SNMP-MPD-MIB::snmpMPDCompliance

SNMPv2-MIB::sysORID.8 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance

SNMPv2-MIB::sysORDescr.1 = STRING: The MIB module for SNMPv2 entities

SNMPv2-MIB::sysORDescr.2 = STRING: The MIB module for managing TCP implementations

SNMPv2-MIB::sysORDescr.3 = STRING: The MIB module for managing IP and ICMP implementations

SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for managing UDP implementations

SNMPv2-MIB::sysORDescr.5 = STRING: View-based Access Control Model for SNMP.

SNMPv2-MIB::sysORDescr.6 = STRING: The SNMP Management Architecture MIB.

SNMPv2-MIB::sysORDescr.7 = STRING: The MIB for Message Processing and Dispatching.

SNMPv2-MIB::sysORDescr.8 = STRING: The management information definitions for the SNMP User-based Security Model.

SNMPv2-MIB::sysORUpTime.1 = Timeticks: (28) 0:00:00.28

SNMPv2-MIB::sysORUpTime.2 = Timeticks: (28) 0:00:00.28

SNMPv2-MIB::sysORUpTime.3 = Timeticks: (28) 0:00:00.28

SNMPv2-MIB::sysORUpTime.4 = Timeticks: (28) 0:00:00.28

SNMPv2-MIB::sysORUpTime.5 = Timeticks: (28) 0:00:00.28

SNMPv2-MIB::sysORUpTime.6 = Timeticks: (32) 0:00:00.32

SNMPv2-MIB::sysORUpTime.7 = Timeticks: (32) 0:00:00.32

SNMPv2-MIB::sysORUpTime.8 = Timeticks: (32) 0:00:00.32

抱歉!评论已关闭.