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位数字符串。
任何想法如何做到这一点?
由于
答案 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)
更多是手动使用,解析输出是恐怖。