随机MAC地址的设置实现


随机Mac地址的实现方法:
1. shell脚本来实现随机Mac;
2. 使用Linux的接口实现随机Mac;


1. shell脚本实现设置随机Mac

shell中获取随机mac地址语句(指定前3段mac地址为00:60:2F, 后3段mac地址随机获取):
echo -n 00:60:2F; dd bs=1 count=3 if=/dev/random 2>/dev/null | hexdump -v -e '/1 ":%02X"'

解析:

1.1. echo命令:
语法格式:echo [Options] [String]
主要用于:字符串的输出;
一般格式:echo [ -n ] 字符串 /其中选项-n表示输出文字后不换行;字符串能加引号,也能不加引号/

1.2. dd命令:
语法格式:dd [Operand]…
操作数:
bs=n: 同时设置读/写缓冲区的字节数为n;
count=n: 只拷贝输入的n块
if=file: 输入文件为file
of=file: 输出文件为file

1.3. hexdump命令:
语法格式:hexdump [Options] [File]…
选项:
-v: 去除中间显示的“*”字符
-e:指定格式字符串,格式字符串包含在一对单引号中,格式字符串形如:’a/b “format1” “format2”’。a/b 表示对每b个输入字节应用format1格式,对每a个输入字节应用format2格式,一般a>b,且b只能为1,2,4,另外a可以省略,省略则a=1。

设置随机MAC到网卡设备中:
ifconfig eth0 hw ether $(echo -n 00:60:2F; dd bs=1 count=3 if=/dev/random 2>/dev/null | hexdump -v -e '/1 ":%02X"')
可以把相关的启动命令配置到启动脚本/etc/init.d/rcS 中,完成开机启动时自动分配随机MAC
!/bin/sh
#网卡的设置
ifconfig eth0 hw ether $(echo -n 00:76:33; dd bs=1 count=3 if=/dev/random 2>/dev/null | hexdump -v -e '/1 ":%02X"')

ifconfig eth0 192.168.117.199

ifconfig eth0 up

2. Linux中实现随机Mac的方法:

random_ether_addr(ndev->dev_addr);
参考内核:Linux3.4.39

static void geth_check_addr(struct net_device *ndev, unsigned char *mac)
{
    int i;
    char *p = mac;

    if (!is_valid_ether_addr(ndev->dev_addr)) {
        for (i=0; i<ETH_ALEN; i++, p++)
            ndev->dev_addr[i] = simple_strtoul(p, &p, 16);

        if (!is_valid_ether_addr(ndev->dev_addr)) {
            geth_chip_hwaddr(ndev->dev_addr);
        }

        if (!is_valid_ether_addr(ndev->dev_addr)) {
            random_ether_addr(ndev->dev_addr);
            printk(KERN_WARNING "%s: Use random mac address\n", ndev->name);
        }
    }
}

本人水平有限,不当之处,欢迎批评指正。转载请注明出处,谢谢!
http://blog.csdn.net/u010014090/article/details/79258795
参考文档:
生成MAC的方法:https://yq.aliyun.com/ziliao/78142
echo讲解:http://blog.csdn.net/vip_wangsai/article/details/72592649
dd讲解:http://blog.csdn.net/cc289123557/article/details/53386123
hexdump讲解:http://man.linuxde.net/hexdump

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值