解决net-snmp正确输出MAC地址和判断空的IP地址

function readVarbinds (buffer, varbinds) {
    buffer.readSequence ();

    while (1) {
        buffer.readSequence ();
        var oid = buffer.readOID ();
        var type = buffer.peek ();

        if (type == null)
            break;

        var value;

        if (type == ObjectType.Boolean) {
            value = buffer.readBoolean ();
        } else if (type == ObjectType.Integer) {
            value = readInt (buffer);
        } else if (type == ObjectType.OctetString) {
            value = buffer.readString (null, true);
            //添加
            if(value.length === 6){
                //关键点:mac转换成字符串的话是乱码。
                //如果str的长度是2表示2个中文,如果长度是6的话,检查是否是字母或数字
                var str = value.toString();
                if(str.length === 6 && !/[0-9A-Fa-f]{6}/.test(str)){
                    value = value.toString(‘hex‘).toUpperCase();
                }
            }
        } else if (type == ObjectType.Null) {
            buffer.readByte ();
            buffer.readByte ();
            value = null;
        } else if (type == ObjectType.OID) {
            value = buffer.readOID ();
        } else if (type == ObjectType.IpAddress) {
            var bytes = buffer.readString (ObjectType.IpAddress, true);
            if (bytes.length != 4)
               //添加
               value = ‘‘;
              //注释
            //throw new ResponseInvalidError ("Length ‘" + bytes.length + "‘ of IP address ‘" + bytes.toString ("hex") + "‘ is not 4");
            else value = bytes[0] + "." + bytes[1] + "." + bytes[2] + "." + bytes[3];
        } else if (type == ObjectType.Counter) {
            value = readUint (buffer);
        } else if (type == ObjectType.Gauge) {
            value = readUint (buffer);
        } else if (type == ObjectType.TimeTicks) {
            value = readUint (buffer);
        } else if (type == ObjectType.Opaque) {
            value = buffer.readString (ObjectType.Opaque, true);
        } else if (type == ObjectType.Counter64) {
            value = readUint64 (buffer);
        } else if (type == ObjectType.NoSuchObject) {
            buffer.readByte ();
            buffer.readByte ();
            value = null;
        } else if (type == ObjectType.NoSuchInstance) {
            buffer.readByte ();
            buffer.readByte ();
            value = null;
        } else if (type == ObjectType.EndOfMibView) {
            buffer.readByte ();
            buffer.readByte ();
            value = null;
        } else {
            throw new ResponseInvalidError ("Unknown type ‘" + type
                    + "‘ in response");
        }

        varbinds.push ({
            oid: oid,
            type: type,
            value: value
        });
    }
}        
时间: 2024-10-24 12:27:09

解决net-snmp正确输出MAC地址和判断空的IP地址的相关文章

PHP获取IP地址的方法,防止伪造IP地址注入攻击

原文:PHP获取IP地址的方法,防止伪造IP地址注入攻击 PHP获取IP地址的方法 /** * 获取客户端IP地址 * <br />来源:ThinkPHP * <br />"X-FORWARDED-FOR" 是代理服务器通过 HTTP Headers 提供的客户端IP.代理服务器可以伪造任何IP. * <br />要防止伪造,不要读这个IP即可(同时告诉用户不要用HTTP 代理). * @param integer $type 返回类型 0 返回IP

IP地址冲突解决方案,局域网IP地址冲突如何解决?

IP地址冲突是网络管理的一个常见问题.尤其在企业局域网内部,由于管控策略的存在,总会有人试图通过修改IP地址来绕开管控.获取更多的上网权限以及更高的带宽.修改的IP一旦和公司的服务器发送IP冲突,会直接影响到办公和业务的正常运行.IP冲突的危害如下: 绕开行为管理策略和流控策略的管控. 导致被冲突的客户机断网. 和服务器IP冲突会影响业务的正常运行. 难以定位,使网络管理混乱无序. 本文将介绍几种常见的"IP地址冲突解决方案",以及出现IP冲突时如何解决的相关措施. 方案一. 禁止私自

win7共享文件夹,在mac下以不同网段的ip地址访问时被防火墙阻止的问题

在利用win7建立共享文件 夹来实现局域网内文件共享的时,当要连到共享计算机的电脑的ip地址处于不同网段时,会被windows防火墙阻止,而无法连接,折腾了一下,找出来办法: 在高级windows防火墙的设置中,把入站规则里面的把文件夹和打印机共享规则里面的作用域中的远程IP地址下面的任何ip地址勾选

linux,windows下检测指定的IP地址是否可用或者检测IP地址冲突的3种方式(批处理程序,python程序,linux shell 批量ping)

本文中的脚本适用范围: 1)检测某些IP地址是否被占用: 2)检测网络中某些设备是否存活: 3)在分配新的ip地址之前,批量检测环境中是否存在冲突的机器 以上检测基于ICMP Ping报文,要求所有的设备允许Ping,设备开通禁止ICMP策略,防火墙禁止ICMP报文等情况不在本文的考虑范围之内. 不多说,上代码: (一)windows 批处理脚本 1 ::autor lb 2 ::date 2018 05 3 @echo off 4 ::屏显当前的测试时间并输出到测试结果(详细日志和结果日志)

Linux系统动态IP地址的获取和静态IP地址的配置

今天刚安装好虚拟机和Linux系统后做了以下实验在这实验中遇到的知识点和实验过程如下 #-  1.Broadcast 协议选项 [BCAST]BROADCAST 指定用于发送广播消息的 IP 地址.使用本地 IP 地址和子网掩码创建缺省广播地址.子网掩码指示哪部分 IP 地址识别网络哪部分识别主机 #-  2.dhclient获得IP地址用ifconfig -a命令查看 .etho表示1个网卡eth1表示2个网卡 .lo表示回环地址 #-  3.用vi打开配置文件命令如下 之后出现以下配置文件

IP地址分类以及C类IP地址的子网划分

国际规定:把所有的IP地址划分为 A,B , C , D , E A 类地址 : 范围从 0-127 , 0 是保留的并且表示所有 IP 地址, 而 127 也是保留的地址, 并且是用于测试环回用的. 因此 A 类地址的范围其实是从 1-126 之间. 如: 10.0.0.1 ,第一段号码为网络号码,剩下的三段号码为本地计算机的号码.转换为 2 进制来说,一个 A 类 IP 地址由 1 字节的网络地址和 3 字节主机地址组成,网络地址的最高位必须是" 0 " , 地址范围从 0.0.0

(转)怎样查看局域网中自己的IP地址和其他电脑的IP地址?

开始菜单->运行->打cmd,回车->再弹出的黑框里打ipconfig -all,回车显示的IP Address就是你的ip地址看局域网的电脑的ip用软件比较方便,比如p2p终结者,网络执法官什么的,不过不建议使用 我在"运行"中输入CMD后,再输入ipconfig后出来了很多IP地址,请问哪个才是我电脑的IP地址.还有怎么才能知道同一个局域网中其他电脑的IP地址呢? 分享到: 2011-04-07 23:08提问者采纳 ipconfig 查到 (以下以我的为例) I

MySQL:IP 地址转换(在常见IP地址现数字之间相互转换)

mysql> select inet_aton('192.168.202.12'); +-----------------------------+ | inet_aton('192.168.202.12') | +-----------------------------+ |                  3232287244 | +-----------------------------+ 1 row in set (0.00 sec) 2.IP由数据形式转换为点分形式 mysql>

Linux下检测IP地址冲突及解决方法

Linux下检测IP地址冲突及解决方法 问题说明: 在公司办公网内的一台物理机A上安装了linux系统(ip:192.168.9.120),在上面部署了jenkins,redmine,svn程序.由于是在办公网内,这台机器和同事电脑都是在同一网段的. 突然某天问题出来了:有部分同事远程ssh登陆不上这台linux系统的机器,jenkins/redmine/svn也登陆不上,其他部分同事可以正常使用. 后来发现,是因为这台linux机器的ip被人占用了,ip地址冲突引起的!! 下面介绍下检查ip地