解决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
});
}
}
解决net-snmp正确输出MAC地址和判断空的IP地址的更多相关文章
- PHP获取IP地址的方法,防止伪造IP地址注入攻击
PHP获取IP地址的方法 /** * 获取客户端IP地址 * <br />来源:ThinkPHP * <br />"X-FORWARDED-FOR" 是代理 ...
- The three day 给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本
""" 给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本. 所谓无效化 IP 地址,其实就是用 "[.]" 代替了每个 ...
- 使用django开发论坛输出调试信息时附加远程客户端IP地址!
前言 最近使用django开发了个匿名社区(哈士奇社区 4nmb.com),但是有个问题一直困扰我半天,就是如何在django调试信息上输出远程客户端的真实IP地址,在网上找了很多资料也没见人遇到过, ...
- 为什么有mac地址还学要有IP地址??
历史原因:早期的以太网只有集线器 ,没有交换机,所以发出去的包能被以太网内的所有机器监听到,因此要附带上MAC地址,每个机器只需要接受与自己MAC地址相匹配的包. 个人感觉上面的说法并不是太准确.找明 ...
- Mac中如何查看电脑的IP地址
方法一:使用ifconfig命令 方法二:在charles中查看 Charles 的顶部菜单的 “Help”->”Local IP Address”,即可在弹出的对话框中看到 IP 地址,如下图 ...
- 网吧局域网里的设置外网IP地址、设置内网IP地址、限制内网速度和路由器共享
现在啊,网吧的需求越来越高,同时在经济比较充裕的情况下,作为网吧的老板可能希望打造全千兆的网吧,让每个进入网吧的人都能充分体验高速的感觉,当然更重要的是在同行竞争中处于上游,特别是对网络游戏爱好者的吸 ...
- linux,windows下检测指定的IP地址是否可用或者检测IP地址冲突的3种方式(批处理程序,python程序,linux shell 批量ping)
本文中的脚本适用范围: 1)检测某些IP地址是否被占用: 2)检测网络中某些设备是否存活: 3)在分配新的ip地址之前,批量检测环境中是否存在冲突的机器 以上检测基于ICMP Ping报文,要求所有的 ...
- (转)怎样查看局域网中自己的IP地址和其他电脑的IP地址?
开始菜单->运行->打cmd,回车->再弹出的黑框里打ipconfig -all,回车显示的IP Address就是你的ip地址看局域网的电脑的ip用软件比较方便,比如p2p终结者, ...
- 淘宝IP地址库获取到省市IP地址
http://ip.aliyun.com/index.html https://ispip.clang.cn/ https://github.com/Pingze-github/local-ips 1 ...
随机推荐
- JavaScript ----------------- 寄生式继承
寄生式继承 寄生式继承是于原型式继承紧密相关的一种思路.寄生式基础的思路与寄生构造函数和工厂模式类似,既创建一个仅用于封装继承过程的函数,该函数内部以某种方式来增强对象,最后再像真地是它做了所有工作一 ...
- MySQL的字符串函数截取字符
函数: 1.从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from my ...
- NOT 运算符
NOT运算符不是独立的,它是一个可以放在任何逻辑表达式前面的修饰符,能得到与结果相反的结果.所以,如果一个表达式是真,就会得到假:如果是假,就会得到真.有时测试查找条件的反面更容易.不过,NOT运算符 ...
- Flex 扩展combobox 实现复选功能
前段时间,老大召唤,给个任务,研究一下flex的combobox控件 实现复选功能(flex自带的combobox控件不可以复选),小兵能力有限,哪里可以扩展呀,网上看了别人写的,发现总是有点瑕疵(关 ...
- 使用Battery Historian(android 5.0)
http://hukai.me/android-performance-battery/可以先参考这篇文章 1$ adb shell dumpsys batterystats > xxx.txt ...
- phpMyAdmin批量修改Mysql数据表前缀的方法
多个网站共用一个Mysql数据库时,为使数据库管理不混乱,一般采用不同的网站使用不同前缀名的方式进行区分.而如何批量修改已有数据库的前缀名 呢?全部导出修改后再导入?还是一个表一个表的修改?今天我要介 ...
- Oracle创建主键自增表
Oracle创建主键自增表 1.创建表 create table Test_Increase( userid number(10) NOT NULL primary k ...
- Parallel并行编程
Parallel并行编程 Parallel并行编程可以让我们使用极致的使用CPU.并行编程与多线程编程不同,多线程编程无论怎样开启线程,也是在同一个CPU上切换时间片.而并行编程则是多CPU核心同时工 ...
- USB class总结
以下是总结的USB的类,不同的USB类,主机询问的描述符格式和内容都不一样,具体的descriptor的内容可以查看 USB spec(http://www.usb.org/home/),如HID的s ...
- 刺猬大作战(游戏引擎用Free Pascal写成,GUI用C++写成,使用SDL和Qt4)
游戏特性[编辑] 游戏引擎用Free Pascal写成,GUI用C++写成,使用SDL和Qt4[2]. 0.9.12开始支持实时动态缩放游戏画面. 个性化[编辑] 刺猬大作战有着高度定制性 游戏模式: ...