2017-05-03 209 views
0

的openSUSE 13.2BASH - 赋值给变量

我试图分配一个随机值rand和接口来mac

我已经试过以下的MAC地址,但他们没” t似乎工作。

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位数字符串。

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

感谢

+3

开始删除'<' –

+0

那么,什么是与随机值的交易,你为什么要传递和折叠? – 123

+0

@ 123我试图返回一个包含字母和数字组合的6位字符串。 – Tom

回答

0

一个更好的方式来获得一个随机字符串可能是这样的:

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

我们第一次抢到32个字节的随机性,饲料,首先要base64,然后tr获得更清晰字符,并删除所有但想要的字符,最后只抓取前012个字节的head。 (没有中间的base64,某些字符串可能不包含6个字符)。

这远非最佳解决方案,但应该产生6个字母数字字符,具有很高的确定性。

用于读取MAC地址,你应该使用类似:

# bash process substitution reads the redirected output to a variable 
eth=$(</sys/class/net/eth0/address) 

随着ifconfig更意味着手动使用和解析输出是恐怖。