snmp工作总结
2004-5月~7月
1, 如何编写MIB文件?
请参见实例:KsgBox-Alarm-MIB.txt
KsgBox-Alarm-MIB DEFINITIONS ::= BEGIN
IMPORTS
enterprises FROM RFC1155-SMI
OBJECT-TYPE FROM RFC-1212
TRAP-TYPE FROM RFC-1215;
cheyenne OBJECT IDENTIFIER ::= { enterprises 46 }
ca-jc OBJECT IDENTIFIER ::= { cheyenne 880 }
-- *************************************************************************
-- Ksg Box Trap
-- **************************************************************************
ksgtrapemergent TRAP-TYPE
ENTERPRISE ca-jc
VARIABLES {
ksgServerName,
ksgtrapdesc
}
DESCRIPTION
"KsgBox Emergent Trap."
--#TYPE "KsgBox Emergent"
--#SUMMARY "%s KSG: %s "
--#ARGUMENTS {0,1}
--#SEVERITY CRITICAL
--#STATE OPERATIONAL
::= 1
ksgtrapnormal TRAP-TYPE
ENTERPRISE ca-jc
VARIABLES {
ksgServerName,
ksgtrapdesc
}
DESCRIPTION
"KsgBox Normal Trap"
--#TYPE "KsgBox Warning"
--#SUMMARY "%s KSG: %s "
--#ARGUMENTS {0,1}
--#SEVERITY MINOR
--#TIMEINDEX 1
--#STATE OPERATIONAL
::= 2
END
2,如何编写traphandler?
traphandler的格式:
traphandle oid|default handler
其中,handler只能是脚本。在linux下,如果自己编写的c程序,需要通过shell脚本来调用。并且shell脚本要规范,在文件头中必须有#!/bin/bash,否则不承认为shell脚本;在windows下,必须用批处理脚本来调用我们写的c程序。
最近仔细研究了一下snmptrapd的运行机制。发现情况如下:
1)通过指定一个参数(-Lf),可以将trap到来的日志记录输出到一个指定文件。其记录格式如下:
-------------------------------------------------------
2004-06-19 17:07:49 ca-96mb2uwxu21p [192.168.89.221] (via 192.168.89.205) TRAP, SNMP v1, community public
SNMPv2-SMI::enterprises.46.879.0.1.0 Link Down Trap (0) Uptime: 0:13:26.69
-------------------------------------------------------
2)在snmptrapd.conf文件中可以配置trap handler。其格式如下:
-----------------------------------------------
traphandle oid | default [trap handler]
-----------------------------------------------
其中[trap handler]必须是脚本,而不能是程序。比如,在windows下,用c语言写了一个程序,build成一个exe文件,如果要指定,当某个特定trap到来时调用这个程序,必须先写一个批处理程序,在批处理中调用该程序。比如,我的c程序是Hello.exe,如果要调用它,我的snmptrapd.conf文件如下:
-----------------------
traphandle 1.3.6.1.6.3.1.1.5.1.0 e:/www
traphandle default e:/www
-----------------------
其中,www是我写的批处理,www.bat的内容如下:
----------------------
e:/hello.exe
----------------------
3)通过-m来指定一个mib库。