admin
不忘初心,方得始终
级别: 管理员
只看楼主 | | | 0楼 发表于:2017-06-03 10:54

自动生成网桥MAC地址的SHELL 解析

  MACADDR="fa:92:$(dd if=/dev/urandom count=1 2>/dev/null |md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4/')";echo $MACADDR
  执行结果是:fa:92:c8:8b:13:23
  dd if=/dev/urandom count=1 2>/dev/null  表示生成1个8位的伪随机数,并且把标准错误输出重定向到/dev/null。其中dd if命令bs默认单位是byte,表示1个字节。
  md5sum用于生成和校验文件的MD5值。它会逐位对文件的内容进行校验。md5值是一个128位的二进制数据,转换成16进制则是32(128/4)位的进制值。
  's/^\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4/'替换效果:将aabbccddeeffgghh替换为aa:bb:cc:dd。
  其中^表示从一行的开头匹配。
  第一个\(..\)表示匹配任意2个字符,并且后面的\1,就是这次匹配的结果。 对于字符串aabbccddeeffgghh而言,就是aa这2个字符
  同理,第二\(..\)匹配bb,对应\2
  第三\(..\)匹配cc,对应\3
  第四\(..\)匹配dd,对应\4
  剩下的eeffgghh匹配 .*$,其中.*表示匹配任意个字符,$匹配到末尾,这些字符串被抛弃。