为变量赋值

时间:2017-05-03 15:30:18

标签: bash random mac-address

openSuSE 13.2

我正在尝试将随机值分配给rand,并将接口的MAC地址分配给mac

我尝试了以下内容,但它们似乎没有用。

rand=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 6 | head -n 1)

eth=$(<ifconfig eth0 | awk '/HWaddr/ {print $5}')

rand应该是包含字母和数字混合的6位数字符串。

任何想法如何做到这一点?

由于

1 个答案:

答案 0 :(得分:0)

获取随机字符串的更好方法可能是:

rand=$(head -c 32 /dev/urandom | base64 | tr -dc 'a-zA-Z0-9' | head -c 6)

我们首先获取32个字节的随机性,首先将其提供给base64然后tr以获得更易读的字符,并删除所有但想要的字符,最后只用{{抓取前6个字节1}}。 (如果中间没有head,则某些字符串可能不包含6个字符。)

这远非最佳解决方案,但应该高度确定地生成6个字母数字字符。

要阅读mac-address,你应该使用类似的东西:

base64

因为# bash process substitution reads the redirected output to a variable eth=$(</sys/class/net/eth0/address) 更多是手动使用,解析输出是恐怖。