pysnmp 自定义MIB编写SNMP代理 (python 开发 snmp)
PySNMP是一种跨平台的纯 Python SNMP 引擎实现。它具有功能齐全的SNMP引擎,能够以代理/管理器/代理角色运行,通过IPv4 / IPv6和其他网络传输来讨论SNMP v1 / v2c / v3协议版本。
尽管它的名字,SNMP并不是一个简单的协议。例如,它的第三个版本引入了复杂的开放式安全框架,多语言功能,远程配置和其他功能。PySNMP实施紧密遵循复杂的系统细节和功能,为用户带来最大的功能和灵活性。
———— pysnmp官网
这将导出一个名为的新文件 MY-MIB.py 。如果要查询我们的代理,您需要将MIB的副本添加到 net-snmp搜索MIB的位置我添加了MY-MIB文件 /usr/lib/python2.7/site-packages/pysnmp/smi/mibs
启动
测试
snmp位于osi的哪一层?
应用层
OSI第7层也称作“应用层”( Layer),是专门用于应用程序的。应用层确定进程之间通信的性质以满足用户需要以及提供网络与用户应用软件之间的接口服务。
如果你的程序需要一种具体格式的数据,你可以发明一些你希望能够把数据发送到目的地的格式,并且创建一个第7层协议。SMTP、DNS和FTP都是7层协议。
扩展资料
OSI模型——
当要对网络上的其它计算机做出回应的时候,每一件事情都以相反的顺序发生。7层应用程序将把数据发送给TCP协议的执行者。然后,TCP协议在这些数据中加入额外的文件头。在这个方向上,数据每前进一步体积都要大一些。
TCP协议在IP协议中加入一个合法的TCP字段。然后,IP协议把这个数据包交给以太网。以太网再把这个数据作为一个以太网帧发送给驱动程序。如果这个数据包的目的地是本地以太网子网,这个操作系统将代替路由器为计算机进行地址解析,并且把数据直接发送给主机。
嵌入式开发用什么开发工具?
嵌入式开发 经验谈(东方赛富3G嵌入式)
在我选择了往嵌入式方向发展之后,就开始考虑应该从何入手了。但是稍稍接触一下之后,忽然觉得一大堆东西向我涌来,把我压的不行。然后接着就是陷入了徘徊期,不知道自己该从哪个知识点开始,感觉很乱。 网上查了一些资料,发现有好多朋友都是有我这样的不知从何下手的问题,而且没有人能给个明确的答复。偶然在一个网站看到了一篇文章,上面把学习嵌入式linux的知识要点列了出来。个人感觉是很详细啦~~~之后又和该老师交流了一下,确认了这些点之间并没有什么必要的顺序。可以说是感到很高兴吧,找到了学习嵌入式的入口点,自己也有信心走下去了!!! 以下是那篇文章以及链接,希望对大家有所帮助。当然了,学习嵌入式的前辈们有什么好的经验,一定不要吝啬啊 ^_^ 一.linux理论知识 1.计算机基本理论;2.CPU体系结构;3.内存管理;4.文件系统;5.进程调度;6.Linux常用操作。 二.linux驱动知识 1.i2c驱动添加使用 2.spi驱动添加和读写 3.io驱动 4.dma驱动 5.中断源 6.竞争,并发,阻塞,异步,线程,内存,io,调试 7.usb 8.flash,文件系统 9.网卡驱动 10. LCD驱动 三.linux编程知识(指令) 1.输入输出,文件,文件夹 2.字符串,数据结构,堆栈,链表,(查找)算法,二叉树 3.线程: 线程属性,线程同步(锁,信号量,条件变量) 4.进程:守候进程,进程通信-管道,信号,SystemV(消息,共享内存,信号灯),读写锁,套接字 5.网络:socket,ftp客户端,tftp客户端,http server,snmp命令 6.环境变量,库默认搜索路径,arm-linux-gcc库路径,设置搜索路径,编译流程,lds文件,内联汇编 7.gcc ,ld, ar, ranlib, objdump, readelf, objcopy工具 8.make makefile 9.shell,perl 10.设备编程v4l,lcd和,串口,并口, mixer, dsp, adc, ts ,mouse
嵌入式驱动开发要具备哪些方面的知识
嵌入式驱动开发需要了解的知识大概有以下几类:
1 嵌入式操作系统驱动框架。每一个操作系统都有自己的构架,应该了解驱动在整个系统中的具体位置与构建驱动程序的主要事项
2 总线知识,比如PCI、USB总线。
3 芯片知识。驱动其实就是对设备上一些寄存器的配置、CPU与设备本身的通讯以及对不同命令的处理
4 要做好驱动,必须对所使用的CPU体系结构有一个比较深刻的认识
5 C++基本用不上,主要是C和汇编。
6 做驱动最好要懂内核调试(比如说linux)
请各位哥哥姐姐帮个忙,给我点NET-SNMP的资料
LZ装了Net-SNMP把
你可以关闭Net-SNMP服务或者直接卸载Net-SNMP
不过留着也无妨
这是个snmp服务的持久化对象,就是net-snmp服务状态在关机后得以保存,差不多可以想象成是个备份,没有什么危害的
针对目前IP网络管理系统中管理信息的收集所存在的不足之处,文中设计了一种基于RMON的网络探测器并给出了具体的实现方案;该探测器充分利用一些现有的免费开发工具包,并可以有效地解决这些问题。
关键词 网络探测器 网络管理 远程监视
1 引言
在一个网络管理系统中,网管信息的收集是一项最基本的任务,它是实现各种复杂的网络管理功能的基础。在本网管系统的基本实现中,是依赖于管理站来采集网络中的各种信息,并对采集到的信息进行分析和处理,这种方式基本上能够满足多数网络的管理需求,然而,它也存在一些不足之处。
(1)所有网管信息的采集全部依赖于中心的管理站,对管理站的处理能力有较高的要求,同时,由于各种原始的网管信息都需要汇集到管理站,就会带来管理站四周较大的网络流量,容易造成网络的阻塞;
(2)对于一些带有防火墙的虚拟网,位于其外部的管理站无法访问到其内部的网络,因而也就无法对其进行监视与管理;
(3)管理站在信息采集的时候,主要是利用SNMP(简单网络管理协议)和各个网络设备进行通信,获得各设备的网管信息。然而,这些信息主要是关于设备自身的,而关于整个网络的总体信息则比较缺乏。
“网络探测器”正是为了有效解决上述问题而提出的。
在本网管系统中,网络探测器是放置在一个局域网内部的硬件装置,它可以按照预定的配置信息,对该局域网内部的网络信息进行收集和统计,并对局域网的工作状况进行监视;同时,提供一定的接口,供管理站与之进行通信,获得它的网管信息,并对它进行配置与管理。 2 网络探测器原理
2.1 网络数据包的侦听
在以太网上,任何一个主机发出的数据包都是在共享的以太网传输介质上进行传输的,每个数据包的包头部分都包含了源地址和目的地址。一般情况下,局域网上各台主机的网卡负责检查每一个数据包,如果发现其目的地址是本机,则接收该数据包并向上层传递,以进行下一步的处理;如果目的地址不是本机,则忽略它。
在一些特殊的情况下,需要让一台主机能够接收所有的数据包,即进行网络数据包的“侦听”,这时,通过对网卡进行设置,可以让该主机的网卡工作在“混杂模式”下,则不论数据包的目的地址是否是本机,都能够截获并传递给上层进行处理。
对于截获的数据包,进行进一步的分析处理,就能够得到数据包的一些基本属性,如包类型、包大小、目的地址、源地址等,这样,就可以在此基础上进行分析和统计。
2.2 SNMP——简单网络管理协议
SNMP是TCP/IP网络上的一个重要的网络管理协议,能够用于监控和管理网络设备,SNMP规范定义了管理站与网络设备之间交换管理信息的协议、管理信息的结构框架、通用的管理信息库MIB等。
SNMP是网络管理系统的基础,本网管系统主要基于SNMP来从各个网络设备获得各种网络管理信息,并在对它们进行进一步分析处理后,提供各种网络管理功能。
在网络探测器的实现中,我们将使用SNMP规范来实现它和管理站的通信,即在网络探测器上实现一个具有完整功能的SNMP Agent,通过SNMP来向管理站提供各种网管信息。网络探测器支持RMON MIB,主要提供整个局域网有关的统计信息。
2.3 RMON——远程监视
RMON(Remote Network )规范是SNMP的一个重要增强,它定义了一种远程监视MIB来作为MIB-II的补充,为网络管理站提供了至关重要的网络信息。RMON可以把子网当作一个整体来监视,提供关于整个子网的一些统计信息。
RMON本质上是定义了一套MIB规范,其作用是定义标准的网络监视功能和接口,使基于SNMP的管理站和RMON探测器之间能够通信。一般说来,RMON提供了一种有效且高效的方法来监视子网行为。
RMON规范主要包括在两个重要RFC文档中:RFC 1757定义了RMON1, RFC 2021定义了RMO- N2。
RMON1主要工作在MAC层,能够监视和它相连的LAN内的所有流量,捕获所有MAC层的帧,从这些帧中读取MAC层的源地址和目的地址,并进行有关的各种分析和统计。
RMON2是RMON1的扩充,RMON2工作在MAC层之上,能够从OSI模型的第3层到第7层对数据包进行解析,监视协议流量,例如,探测器能够基于网络层协议和地址(包括IP)来监视流量。
RMON规范定义的MIB库结合在MIB-II中,其子树标识为16。RMON1定义了10个组,RMON2在RMON1的基础上进行了简单扩充,添加了9个新的组。
3 系统总体设计
3.1 基本设计思想
从本质上讲,网络探测器是一个支持RMON规范的SNMP Agent,其主要任务包括:
(1)采集、分析和统计局域网的各种有用信息,按照RMON规范对这些信息进行组织;
(2)实现SNMP Agent,提供标准的SNMP接口,供管理站从它获得网络管理信息。
网络探测器底层的平台是嵌入式Linux系统,该系统具有网络模块,可以接入以太局域网。具体的平台要求是:
硬件系统平台:性能较高,处理速度相对较快,内存容量较大,带有网络模块;
操作系统平台:支持网络功能,能够接入以太网,提供C++编译开发工具。
在本网络探测器的实现时,考虑到运行效率、硬件成本、使用方便性等各方面的因素,做了以下限定:
(1)针对目前最常见的以太网环境;
(2)有一个接口使其仅能连接到一个子网,这样可使得系统简单有效、易于安装配置;
(3)全部MIB对象存放在内存中,提高运行效率;
(4)有选择地实现一些重要的MIB组;RMON是一个功能非常强大的MIB库,能够为管理站提供详细的网络管理信息,然而,在一般应用中都不大可能对所有的SNMP MIB组加以实现。
3.2 系统基本体系结构
图2给出了本网络探测器的基本体系结构。网络探测器包括以下一些基本组成模块:网络侦听、数据包分析、分类统计计数、RMON MIB库、SNMP处理以及Trap发送等。
探测器系统中,各个功能模块的主要功能如下:
网络侦听模块负责从网络上截获所有的数据包;网络探测器连接在特定局域网上,它能够对该局域网上传输的所有数据包进行截获,然后提交给上层模块进行分析处理。
数据包分析模块对截获的数据包根据数据包的类型、源地址、目的地址、包大小等基本信息逐个进行分析。
数据包分析模块在对数据包进行分析后,根据数据包的特性,调用特定的分类统计计数模块对该包进行统计计数,分类统计计数模块按照MIB库的规范要求,将统计结果更新到有关的一些MIB对象中。
RMON MIB库用来保存各种RMON MIB对象(实际上还包括MIB-II的System组和Interface组),这些对象按照RMON MIB规范进行组织,这里的MIB库是一个概念上的数据库,实际上各种信息都组织在内存中,以提高访问效率。
SNMP处理模块负责实现SNMP访问接口,接收SNMP请求(包括Get、、Set等操作),对它进行分析处理,并按照要求访问RMON MIB库,从中取得需要的MIB对象值并返回给请求者(对Get、而言),或者设置有关的MIB对象值(对Set操作而言)。
Trap发送模块负责在发生特定事件时,主动发送Trap信息给预定的管理站;在分类统计计数模块对MIB对象的值进行计数时,如果发现特定值超过了预定的范围,则启动Trap发送模块,按照预定策略发送Trap信息给管理站。
4 实现技术
4.1 SNMP Agent的实现
目前,已经有一些可用的SNMP Agent开发工具包,它们提供一些基本的框架平台,实现了Agent的通用功能,在其基础上,开发者可以集中精力进行具体逻辑功能的实现,如MIB对象的数据采集等。这样有利于简化开发工作,加快开发进程。常见的SNMP Agent开发工具包有:Agent++、net-snmp、WinSnmp API(适用于Windows平台)等。
为了方便探测器Agent的实现,我们选择了Agent++平台,它是免费的且源代码公开。
Agent++是一套用于开发SNMP Agent的C++库,它建立在SNMP++的基础之上。Agent++提供了完整的协议处理框架,提供了标量对象和表对象等MIB对象的基类,通过继承用户可以方便地定义MIB对象。Agent++具有以下一些特点:
(1)功能强大,能够实现各种复杂的MIB对象;
(2)简单易用,开发人员无需深入了解底层的SNMP处理,仅使用一些简单的类和接口,即可快速实现带有各种MIB对象的Agent;
(3)扩展性强,方便定义和实现新的功能;
(4)可移植性好,代码可以方便地移植到Windows、UNIX、Linux等平台上;
(5)支持SNMPv1和SNMPv2c;
(6)支持多线程处理,在线程中处理SNMP请求,可以进行并发的处理;
(7)支持MIB对象的持久保存,可将MIB对象保存到硬盘上,并可以从硬盘装载;
(8)具有详细的日志功能。
4.2 网络数据包侦听的实现
网络数据包的侦听也可以使用一些现成的开发包来实现,winpcap和libpcap是比较著名的开发包,提供了较强的网络数据包截获功能,其中,winpcap运行在Windows平台上,libpcap运行在UNIX和Linux平台上。
本项目使用libpcap作为数据包侦听部分的开发包。
libpcap(Packet Capture Library),即数据包捕获函数库。在网络包抓取中libpcap是非常常用的一个库,著名的tcpdump就是用它来实现的。libpcap是一个与实现无关的访问操作系统所提供的分组捕获函数库,用于访问数据链路层。这个库为不同的平台提供了一致的C函数编程接口,在安装了 libpcap 的平台上,以 libpcap 为接口写的程序、应用,能够自由地跨平台使用。它支持多种操作系统。
libpcap 结构简单,使用方便;它提供了20多个API封装函数,我们利用这些API函数即可完成本网络探测器所需的网络数据包监听功能。
5 结束语
针对网络管理系统的管理信息收集所存在的一些特殊问题,本文设计并实现一种网络探测器。在一个网络管理应用系统中,要根据具体情况决定是否为一些局域网设置网络探测器。所以网络探测器是对本网络管理系统基本实现的补充,它可以使得本网管系统功能更加完善。实践证明本实现方案简单实用,达到了预期的目的。
参 考 文 献
[1] Stallings W,胡成松, 汪凯译 . SNMP网络管理,北京:中国电力出版社,2001
[2] RFC 1213-1991, Base for Network of TCP/IP-based internets: MIB-II
[3] RFC 1757-1995, Remote Network Base
[4] RFC 2021-1997, Remote Network Base II
求嵌入式linux开发详细流程(步骤)?
1.首先,建立交叉编译环境:交叉编译是指:在PC机上编译,在目标板上执行,我PC是linux+ arm-elf-gcc编译器.扳子是ARM3000.板子上的系统是uclinux,这时一个剪裁的很小的实时嵌入式linux操作系统.推荐使用这个.
2.然后就是你写程序喽,不过注意可能有些库函数不能用,因为哪个编译器稍微受限一点,不是所由的c库函数都支持,不过一般开发的都有.
3.连起你的主机和开发板,这个你会不?要连两个:串口(用来控制板子)和以太口(用来下载程序),我们板子上这些外设都有,你要使没有可以用其他的口代替传程序,但串口可是该有的阿!
4.在你主机上编译程序生成目标代码,建议用makefile文件来组织你的联编关系.
5.把生成代码下载到目标板执行调试.我是用的主机的NFS(网落文件)服务,下载到目标板的.
6.注:目标板是怎么控制的呢?是用串口控制的,可用minicom,设置好你要控制的串口,也应该是你连板子的那个.在命令行里敲上minicom,即进入minicom截面,开启你的板子,应该就是板子uclinux系统解压安装的画面了.然后用ifconfig eth0.....
配置ip,这个ip就是你板子的ip了,注意与主机一个网段.然后mount -t nfs 主机ip:/uclinux /板子上的一个目录,就把主机的 uclinux目录放到板子上了(这么说其实不合理,应该叫挂载). 然后找到你刚才一经编译好的哪个目标代码执行即可.
因不了解你的具体环境和配置,暂说这些,有问题可再联系:)
如何用net snmp开发snmp客户端
Linux下net-snmp的安装提供的net-snmp安装包中有以下目录运行install脚本执行安装,但不建立用户运行install_cm脚本执行安装并建立cm用户运行install_vg脚本执行安装并建立vg用户用户也可以用命令:net-snmp-config --create-snmpv3-user -a MD5 -A $snmp_auth -x DES -X $snmp_priv $snmp_usr$snmp_auth 是认证密码,密码必须大于8位$snmp_priv是加密密码,密码必须大于8位$snmp_usr是将要建立的用户名 安装完以后自动启动可以运行 tools/目录下的snmpwalk命令来检查是否安装成功./snmpwalk -v 3 -l authPriv -u cm -aMD5 -A password -xDES -X password 127.0.0.1 Windows下snmp协议的安装(,windows xp)控制面板-》添加删除程序-》添加组件-》管理和监视工具点详细信息,勾选“简单网络管理协议”安装过程中会提示插入系统盘安装完成后,选择管理工具-》服务在右边的列表中选中“SNMP service”, 右键-》属性里面有一个安全页面,可以自己添加一个团体,也可以用默认的“public”团体。下面选择“接受任意主机的snmp数据包”,或者选择“接受指定主机的snmp数据包”,填入主机的ip地址或主机名。
有关snmp的get,getnext,getbulk操作的问题
关于snmp编程的资料其实很多。我建议你下载net-snmp开发包,看看里面的代码!他是用C语言编写的,编译后可以linux系统上测试。现成api是没有,不过你可以在这个开发包找到很多有用的函数。你可以重点看一下asn.c(有关ber编码文件)snmp_api.c(解析封装snmp包的)。你把这些文件好好整理一下,就可以得到自己的api,这就是最好的列子。
我自己动手写过snmp协议,实现get、getnext、set、snmptrap命令。代码不会很长,只有几千行。
如果有问题发邮件到wmz303@126.com进行交流
snmp字符串支持中文吗
不支持。在开发Snmp协议传输数据的时候,发现中文就会乱码,所以不支持。
字符串主要用于编程,概念说明、函数解释,在存储上类似字符数组,所以它每一位的单个元素都是可以提取的。