前言
最近需要提取MAC地址中OUI(前6位)对应的厂商信息,通过搜索在IEEE的官网上找到OUI与厂商和地址的映射文件,下文记录下提取方法.
学习笔记,以备查阅.
@Author duangr
@Website http://my.oschina.net/duangr/blog/183789
1. IEEE OUI文件
http://standards.ieee.org/develop/regauth/oui/oui.txt
OUI Organization
company_id Organization
Address
00-00-00 (hex) XEROX CORPORATION
000000 (base 16) XEROX CORPORATION
M/S 105-50C
800 PHILLIPS ROAD
WEBSTER NY 14580
UNITED STATES
00-00-01 (hex) XEROX CORPORATION
000001 (base 16) XEROX CORPORATION
ZEROX SYSTEMS INSTITUTE
M/S 105-50C 800 PHILLIPS ROAD
WEBSTER NY 14580
UNITED STATES
.......
将文件下载下来,上传到服务器上, 文件名为 oui.txt
2. 提取OUI与厂商的映射
从文件中grep hex 提取 00-00-00 对应的厂商信息
cat oui.txt |grep hex > MAC_original.file
通过如下脚本,处理文件格式
#!/bin/sh
SRC_FILE=MAC_original.file
TGT_FILE=MAC_out.log
rm ${TGT_FILE}
declare -l str_l
cat ${SRC_FILE} |grep -v "^#" | while read line;
do
str_l=${line:0:8}
mac=`echo ${str_l} | awk -F"-" '{print $1":"$2":"$3}'`
echo "${mac}^A${line:18}" >> ${TGT_FILE}
done
将上面代码写入脚本执行后,生成格式化后的文件 MAC_out.
P.S. 其中^A 为"Ctrl+V" "Ctrl+A" 输入
3. 处理后的数据
00-00-00^AXEROX CORPORATION
00-00-01^AXEROX CORPORATION
00-00-02^AXEROX CORPORATION
00-00-03^AXEROX CORPORATION
00-00-04^AXEROX CORPORATION
00-00-05^AXEROX CORPORATION
...
数据有了,后面是导入到数据库中还是存储到HDFS中,就看个人喜好了.