Linux: 生成隨機的MAC地址
阿新 • • 發佈:2020-12-19
場景
有一批ARM板出來全都是同一個MAC地址: 08:00:27:00:01:92
這就導致獲取的IP都是一樣的,需要讓他們啟動後獲取各自不一樣的IP,因此每個板子都需要獲得其自己的MAC地址(後三個BYTE區分身份): "08:00:27:XX:XX:XX"
解決方案
用shell指令碼來實現隨機的MAC。
MAC printf test
Printf random mac by 4 commands :
$ echo "08:00:27$(dd bs=1 count=3 if=/dev/random 2>/dev/null |hexdump -v -e '/1 ":%02X"')" $ echo "$(hexdump -n3 -e'/3 "08:00:27" 3/1 ":%02X"' /dev/random)" $ printf '08:00:27:%02X:%02X:%02X\n' $[RANDOM%256] $[RANDOM%256] $[RANDOM%256] $ echo 08:00:27:`openssl rand -hex 3 | sed 's/\(..\)/\1:/g; s/.$//'`
設定網絡卡的MAC地址(重啟後失效)
$ ifconfig eth0 hw ether [mac_address]
通過系統啟動指令碼來設定
Target:
- 第一次啟動時生產一個隨機的MAC,記錄該MAC地址
- 下一次啟動直接讀取這個本機專屬MAC
demo: /etc/init.d/network.sh, 新增配置的實現:
echo "Set mac address and ifconfig eth0 up .." if [ -f "mac_address" ];then echo "Load existing mac_address.." ifconfig eth0 hw ether $(cat mac_address) else echo "Not setup mac_address yet, create one." echo "$(hexdump -n3 -e'/3 "08:00:27" 3/1 ":%02X"' /dev/random)" > mac_address ifconfig eth0 hw ether $(cat mac_address) fi ifconfig eth0 up