精华内容
下载资源
问答
  • SnmpTrap测试与学习

    2016-05-12 11:37:15
    公司有一款产品是基于SNMP进行管理的。...说一下自我对这方面的理解:snmp trap162其实就相当于服务器端,主要用于接收(公司产品就是一个trap)。而开启SNMP161的机器就相当于客户端,主要用于发送。当客户端主...

    公司有一款产品是基于SNMP进行管理的。所以自己也就摸索着,学习点有关这方面的知识。

    有关SnmpTrap的理论知识我就不做介绍了。你可以去百度中找到很多很多有关这方面的介绍。说一下自我对这方面的理解:snmp trap162其实就相当于服务器端,主要用于接收(公司产品就是一个trap)。而开启SNMP161的机器就相当于客户端,主要用于发送。当客户端主动向服务器端发起请求或者报告相关的信息,此时服务器端会接收到相关的信息,然后服务器端在进行相关的处理。

    我们这次试验的目的就是模拟SnmpTrap的发送与接收。这主要牵涉到两个软件TrapGen和SNMP_Trap_Watcher,有关这两个软件的下载地址,我会在文章末尾附上。而TrapGenz主要是用于发送有关SNMP的告警信息。而SNMP_Trap_Watcher主要是用于接受SNMP的告警信息。有关TrapGen软件的详细使用,可以参考我另外一篇文章《烂泥:TrapGen 使用说明》。

    在我们开始试验之前,我们首先要你部署TrapGen,我现在把TrapGen部署在windows/sysytem32下。如下图:

    clip_image001

    具体为什么这样部署,你也可以参考我另外一篇文章《烂泥:有关系统环境变量的设置问题》。

    部署完毕后,我们就可以进行接下来的实验了。

    首先、打开SNMP_Trap_Watcher,如下图:

    clip_image002

    该软件会自动检测SNMPTrap的162端口是否被占用,如果占用的话,它会提示的。如下图:

    clip_image003

    如何找出是哪一个进程占用了该端口,我们可以使用“netstat –ano |find “162””命令,找出来,如下图示:

    clip_image004

    通过上图我们找到占用162端口的进程PID号,然后我们再任务管理器中找到该进程,如下图示:

    clip_image005

    通过上图我们可以很明显的看到原来是snmptrap.exe进程占用了162端口,我们只需要把改进成禁用或者是禁用该进程的服务即可。snmptrap.exe其实是windows中的SNMPTrap服务所使用的进程,我们只需要把SNMPTrap服务禁用或者停止即可。如下图示:

    clip_image006

    停止SNMPTrap服务后,我们再次使用“netstat –ano |find “162””命令,看看实际的效果:

    clip_image007

    现在我们的SNMP_Trap_Watcher就可以正常运行了。SNMP_Trap_Watcher正常后,我们来通过TrapGen手动产生一个告警,代码为“trapgen -d ilanni.com -v 1.3.6.1.4.1.1824.1.0.0.1 STRING “This is a test snmptrap””,如下图:

    clip_image008

    我们通过上图可以看到,SNMP_Trap_Watche已经接收到,我们发送的测试告警信息“This is a test snmptrap”。说明我们的实验已经成功了。

    展开全文
  • logstash(二):搭建snmptrap测试环境

    千次阅读 2017-08-08 09:23:33
    对于网络设备,抓取日志的最佳方式莫过于snmptrap,简单快捷、扩展丰富、解析方便,首先需要配置snmptrap插件,这是默认安全的输入插件。首先检查插件的安装情况与版本信息:# 检查安全包内是否包含此插件 bin/...

    对于网络设备,抓取日志的最佳方式莫过于snmptrap,简单快捷、扩展丰富、解析方便,首先需要配置snmptrap插件,这是默认安全的输入插件。

    首先检查插件的安装情况与版本信息:

    #   检查安全包内是否包含此插件
    bin/logstash-plugin list --version|grep snmp

    其次编写snmp trap配置文件:

    input {
        snmptrap {
            #   记住端口号一定要大于1024
            port => "1064"
            community => ["public"]
            host => "192.168.101.204"
        }
    }
    
    output {
        stdout {
            codec => rubydebug
        }
    }

    启动logstash进程,准备接受数据。

    在客户端模拟snmptrap请求,如下:

    #   注意在IP地址后跟上端口号信息
    snmptrap -v 2c -c public 192.168.101.204:1064 '' 1.3.6.1.4.1.8072.2.3.0.1 1.3.6.1.4.1.8072.2.3.2.1 i 123456

    如果,logstash收到类似于如下格式的内容,则表示配置成功。

    {
                   "SNMPv2-MIB::snmpTrapOID.0" => "SNMPv2-SMI::enterprises.8072.2.3.0.1",
        "SNMPv2-SMI::enterprises.8072.2.3.2.1" => "123456",
        "@timestamp" => 2017-08-07T02:38:30.978Z,
        "host" => "192.168.101.203",
        "@version" => "1",
     "message" => "#<SNMP::SNMPv2_Trap:0x765fd85 @request_id=502220829, @error_index=0, @error_status=0, @source_ip=\"192.168.101.203\", @varbind_list=[#<SNMP::VarBind:0x4658f7be @name=[1.3.6.1.2.1.1.3.0], @value=#<SNMP::TimeTicks:0x5ff5d1ae @value=25517812>>, #<SNMP::VarBind:0x77549600 @name=[1.3.6.1.6.3.1.1.4.1.0], @value=[1.3.6.1.4.1.8072.2.3.0.1]>, #<SNMP::VarBind:0x2713eeaa @name=[1.3.6.1.4.1.8072.2.3.2.1], @value=#<SNMP::Integer:0x267708f1 @value=123456>>]>",
                   "SNMPv2-MIB::sysUpTime.0" => "2 days, 22:52:58.12"
    }
    展开全文
  • SNMP TRAP消息其实就是UDP...本demo包含TRAP接收的服务器和发送TRAP消息的UDP客户端两个部分,基于SnmpSharpNet做的,VS2008工程,全部源代码,可直接编译和测试。 运行TRAP服务器端,不需要开启电脑的SNMP服务器。
  • ARMLinux下Alignment trap的一些测试

    千次阅读 2012-08-09 14:50:49
    项目中有时会遇到字节对齐的问题,英文为“Alignment trap”,如果直译,意思为“对齐...下面的例子使用了几种重现Alignment trap的方法,例子1是将char*指针直接转换成int*指针,经测试,未发现有字节对齐的问题。例子

    项目中有时会遇到字节对齐的问题,英文为“Alignment trap”,如果直译,意思为“对齐陷阱”,不过这个说法不太好理解,还是直接用英文来表达。

    ARM平台下一般是4字节对齐,可以参考文后的给出的文章链接。此处不细说。后面提及“字节对齐”

    下面的例子使用了几种重现Alignment trap的方法,例子1是将char*指针直接转换成int*指针,经测试,未发现有字节对齐的问题。例子2和例子3相似,主要是结构体中的字段没有进行对齐(或者访问的地址没有4字节对齐)。例子4是直接访问了没有字节对齐的指针。后3个例子在测试时均出现了错误。

    /**
     *
     Linux下对Alignment trap的处理有下面几种方式:
     0 (ignored)
     1 (warn)
     2 (fixup)
     3 (fixup+warn)
     4 (signal)
     5 (signal+warn)

     使用方法:
     # echo 3 > /proc/cpu/alignment
     */


    #include <stdio.h>
    #include <stdlib.h>

    /// case 1
    void fool(unsigned char* buf, int len)
    {
        unsigned int* p = (unsigned int*)buf;
        int i;

        for (i = 0; i < len; i++)
        {
            *p++ = i+1;
            printf("%d ", *p);
        }
    }

    void foolish()
    {
        unsigned char poor[100];

        fool(poor, sizeof(poor)/sizeof(int));
        
    }

    // case 1 end


    /// case 2

    struct rte_unpacked_struct_t
    {
        char c1;
        int i;
        char c2;
        short s1;
        char c3;
    };

    struct rte_packed_struct_t
    {
        char c1;
        int i;
        char c2;
        short s1;
        char c3;
    }__attribute__((__packed__));

    struct rte_unpacked_struct_t unpacked;
    struct rte_packed_struct_t packed;

    void print_addr()
    {
        printf("sizeof(unpacked) = %d sizeof(packed) = %d\n"sizeof(unpacked), sizeof(packed));
        printf("Addr of unpacked: %p\n", &unpacked);
        printf("Addr of unpacked.c1: %p\n", &unpacked.c1);
        printf("Addr of unpacked.i: %p\n", &unpacked.i);
        printf("Addr of unpacked.c2: %p\n", &unpacked.c2);
        printf("Addr of unpacked.s1: %p\n", &unpacked.s1);
        printf("Addr of unpacked.c3: %p\n", &unpacked.c3);

        printf("Addr of packed: %p\n", &packed);
        printf("Addr of packed.c1: %p\n", &packed.c1);
        printf("Addr of packed.i: %p\n", &packed.i);
        printf("Addr of packed.c2: %p\n", &packed.c2);
        printf("Addr of packed.s1: %p\n", &packed.s1);
        printf("Addr of packed.c3: %p\n", &packed.c3);

    }

    short* rte_get_s1(void)
    {
        return &unpacked.s1;
    }

    void case2()
    {
        print_addr();

        int* val = (int *)rte_get_s1();
        printf("val = %d\n", *val);    
    }
    /// case 2 end


    /// case 3
    struct foo_t
    {
        short a;
        short b;
        short c;
        short d;
    };

    struct foo_t foo;

    short* get_foo_c(void)
    {
        return &foo.c;
    }

    void case3()
    {
        printf("sizeof(foo) = %d\n"sizeof(foo));
        // 注意!!此处将short*强制转换为int*,造成出错
        int* val = (int *)get_foo_c();
        printf("val: %d\n", *val);
    }

    // case 3 end
    //

    /// case 4

    void case4()
    {
        char* str = "01234567";
        unsigned* u = (unsigned *)(str+1);
        printf("0x%08x\n", *u);
    }

    /// case 4 end

    int main()
    {
        printf("test of alignment trap...\n");

        //foolish();

        //case2();
        //case3();
        case4();

        return 0;
    }



    以下是在某ARMLinux平台下的测试结果,依次将错误处理等级设置为0到5,出现不的结果,如下:

    # echo 0 >  /proc/cpu/alignment 
    # ./a.out 
    test of alignment trap...
    0x30333231
    # echo 1 >  /proc/cpu/alignment 
    # ./a.out 
    testAlignment trap: a.out (1125) PC=0x000086c8 Instr=0xe5931000 Address=0x00008961 FSR 0x001
     of alignment trap...
    0x30333231
    # echo 2 >  /proc/cpu/alignment 
    # ./a.out 
    test of alignment trap...
    0x34333231
    # echo 3 >  /proc/cpu/alignment 
    # ./a.out 
    testAlignment trap: a.out (1127) PC=0x000086c8 Instr=0xe5931000 Address=0x00008961 FSR 0x001
     of alignment trap...
    0x34333231
    # echo 4 >  /proc/cpu/alignment 
    # ./a.out 
    test of alignment trap...
    Bus error
    # echo 5 >  /proc/cpu/alignment 
    # ./a.out 
    testAlignment trap: a.out (1129) PC=0x000086c8 Instr=0xe5931000 Address=0x00008961 FSR 0x001
     of alignment trap...
    Bus error

    常用的是使用等级3来处理,即提示错误并进行修复。

    上面只讲到如何使用代码出现字节对齐错误,但没涉及如何排查问题。示例代码十分简单,很容易定位错误地方,但如果在大型项目中,就很难定位,尤其是在嵌入式中,——嵌入式的调试也相对比较困难、麻烦。以我的经验,与其用gdbserver来调试,不如靠经验及printf大法解决问题来得更快(当然,仅个人看法)。

    本来想用工具调试来发现出错的代码位置,但尝试了,没结果。

    在代码编写中,需要注意一下以下的事:
    1、结构体尽量使用4字节对齐,比如设置一个传输长度len的类型时,用short表示的范围已经足够,当然也可以用int。像制定一些网络协议,最好考虑一下4字节对齐。
    2、分配内存时也尽量4字节对齐,无论是申请的内存还是定义数组大小。
    3、对指针进行访问的时候也要十分注意4字节对齐,特别是一些为了避免编译警告的强制类型转换。

    参考资料:

    http://www.rt-embedded.com/blog/archives/resolving-alignment-traps/
    http://simplemachines.it/arm-linux/book/afaq.html

                                                                                                                                                                                                                迟 代码随笔 即日

    展开全文
  • 本篇主要记录一次Trap事件模式测试,使用脚本进行的过程。 (1)首先要在服务器上安装Snmp相关服务。 输入snmptrap 后输出相关使用命令,即保证服务安装正常。 (2)编写脚本 使用for 循环 + 自定义函数实现...

    本篇主要记录一次Trap事件模拟测试,使用脚本进行的过程。

    (1)首先要在服务器上安装Snmp相关服务。

      输入snmptrap 后输出相关使用命令,即保证服务安装正常。

    (2)编写脚本

       使用for 循环 + 自定义函数实现。需要注意的是,自定义函数一定要先定义,linux 脚本不同于java 语言,函数如果不先定义,先写for 循环,执行不成功。

    #!/bin/bash
    
    function test(){
    
            oidPrefix=1.3.6.1.4.1.2231.2.15.4.1.$1
    
            targetIp=192.168.3.165
            targetPort=162
    
            trapOid=1.3.6.1.4.1.2231.3.$1
    
    
            eventIdOid=${oidPrefix}.1.0
            eventIdVal=1500
    
            SnOid=${oidPrefix}.2.0
            SnVal=1
    
    
            devIdOid=${oidPrefix}.3.0
            devIdVal=IBM-3400003
    
            typeOid=${oidPrefix}.4.0
            typeVal=2
    
            timeOid=${oidPrefix}.5.0
            timeVal=`echo "2000-01-17 11:38:36"`
    
            descOid=${oidPrefix}.6.0
            descVal=`echo "cpu usage is over 95%"`
    
            snmptrap  -v 2c -c public ${targetIp}:${targetPort} "" ${trapOid} \
            ${eventIdOid} s "${eventIdVal}" ${SnOid} s "${SnVal}" ${devIdOid} s "${devIdVal}" \
            ${typeOid} s "${typeVal}" ${descOid} s "${descVal}" ${timeOid} s "${timeVal}"
    }
    
    
    for((i=1;i<=10;i++));
    do
       test $i;
    done

     执行以上脚本发送trap.

    (3) 服务端接收的trap 信息。

    {VBS=[{variable=37 days, 1:08:17.85, oid=1.3.6.1.2.1.1.3.0, type=TimeTicks}, 
    {variable=1.3.6.1.4.1.2231.3.3, oid=1.3.6.1.6.3.1.1.4.1.0, type=OID}, 
    {variable=1500, oid=1.3.6.1.4.1.2231.2.15.4.1.3.1.0, type=OctetString},
     {variable=1, oid=1.3.6.1.4.1.2231.2.15.4.1.3.2.0, type=OctetString}, 
    {variable=IBM-3400003, oid=1.3.6.1.4.1.2231.2.15.4.1.3.3.0, type=OctetString}, 
    {variable=2, oid=1.3.6.1.4.1.2231.2.15.4.1.3.4.0, type=OctetString},
     {variable=cpu usage is over 95%, oid=1.3.6.1.4.1.2231.2.15.4.1.3.6.0, type=OctetString}, 
    {variable=2000-01-17 11:38:36, oid=1.3.6.1.4.1.2231.2.15.4.1.3.5.0, type=OctetString}], peerAddress=10.11.3.163/57050}

     

     

    展开全文
  • trap、expect脚本练习

    2020-06-08 20:27:26
    1、trap测试 #!/bin/bash trap 'echo "singal:Press Ctrl+c"' int for i in {1..10};do sleep 1 echo $i done trap '' int for i in {11..20};do sleep 1 echo $i done trap '-' int for i in {21..30};do ...
  • 二、测试trap 在管理端 配置vim /etc/snmp/snmptrapd.conf authcommunity execute,log,net public  (其中authcommunity是为了设置所有用户的访问权限:可执行,记录,传递) traphandle .1.3.6.1.4.1.2021.251.1...
  • package com.example.demo.test.snmp.test.snmpV2.trap.test4; import java.io.IOException; import java.net.UnknownHostException; import java.util.Vector; import org.slf4j.Logger; import org....
  • SnmpUtilSendTrap:发送snmp trap信息到trap接收端。 import java.io.IOException;import java.util.Vector;import org.snmp4j.CommunityTarget;import org.snmp4j.PDU;import org.snmp4j.Snmp;import org.snmp4j....
  • 1. 问题描述在一次项目中,需要通过zabbix去监控一台宏杉的存储,但由于该存储是不支持SNMP的,只能通过SNMPTRAP去获取这台存储的告警信息,当我们去存储上发送一条测试的snmptrap信息时,却发现zabbix-server没有...
  • trap信号捕捉详解

    2018-01-23 12:41:49
    标签:trap捕捉信号 1)trap介绍 2)trap信号列表 3)trap使用例子 4)测试INT(2)信号 5)同时测试多个信号 6)shell跳板机案例 【trap介绍】 通过trap命令用于指定在接收到信号后要采取的行动;trap...
  • snmpv3接收trap消息 java snmp4j接收V3trap消息前言消息接收类消息发送类测试结果 前言 网上关于V3加密认证的例子不多,尤其是认证和加密的,很多都是发送trap的例子,很少有接收trap的例子。 虽然是V3,但也支持V1...
  • 前端开源库-trap

    2019-08-30 01:57:08
    前端开源库-trap陷阱,一种测试代码的简单方法。
  • 在一次项目中,需要通过zabbix去监控一台宏杉的存储,但由于该存储是不支持SNMP的,只能通过SNMPTRAP去获取这台存储的告警信息,当我们去存储上发送一条测试的snmptrap信息时,却发现zabbix-server没有生成zabbix_...
  • snmp trap命令接收软件

    热门讨论 2012-08-09 11:10:31
    windows平台下,用于接收snmp协议的trap消息的小软件,可以测试你编写的trap命令是否发送成功了
  • SNMP Tester,根据常用oid发起get-request和trap测试
  • snmp trap安装配置

    千次阅读 2018-04-12 17:49:21
    配置备注:配置文件路径, /etc/snmp/snmptrapd.conf在snmpwalk介绍及其用法一文中,介绍过net-snmp的snmpwalk的用法,殊不知,net-snmp还有trap的命令程序,可以用来测试snmp的trap方法(包括inform方法)。...
  • linux下基于netsnmp写的trap服务器,纯C代码,可解析出trap发送方的地址及trap消息内容,可直接编译和测试。编译方法为: gcc trap.c -lnetsnmp
  • ARMLinux下Alignment trap的一些测试 2、问题描述 Alignment trap: not handling instruction e1942f9f at [] Unhandled fault: alignment exception (0x001) at 0x4fe64c11ing… 3、问题分析 这个问题的出现...
  • net-snmp-trap发送(c语言)

    热门讨论 2012-08-31 18:16:44
    C语言中net-snmp-trap发送代码,测试可行。
  • net-snmp 安装与trap调试

    千次阅读 2018-03-07 17:41:04
    net-snmp的安装与测试 ... 了解snmp-trap的接受与解析,实验当相关trap发生时,对应的服务器立即响应 TRAP是提供从代理进程到管理站的异步报告机制 snmp(简单网络管理协议)为了使服务端及时...
  • 1)trap介绍2)trap信号列表3)trap使用例子4)测试INT(2)信号5)同时测试多个信号6)trap结合shell实战7)执行脚本测试trap介绍】通过trap命令用于指定在接收到信号后要采取的行动;trap命令的一种常见用途是在...
  • 服务器测试 在项目根目录中运行以下命令。 make server-test 客户 在项目根目录中运行以下命令。 make client 现在,您可以访问Jomon客户端页面的http://localhost:3000 。 您可以使用swagger.yaml访问...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 133
精华内容 53
关键字:

trap测试