Fiev "one line" examples to generate a mac address:

1. VMware MAC

root@linux ~ # dd if=/dev/urandom bs=1 count=3 2>/dev/null | od -tx1 | head -1 | cut -d' ' -f2- | awk '{ print "00:0c:29:"$1":"$2":"$3 }'
00:0c:29:f1:4b:c4
root@linux ~ # echo -n 00:0c:29; dd bs=1 count=3 if=/dev/random 2>/dev/null |hexdump -v -e '/1 ":%02X"';
00:60:2F:43:D6:32

2. Xen MAC

root@linux ~ # dd if=/dev/urandom bs=1 count=3 2>/dev/null | od -tx1 | head -1 | cut -d' ' -f2- | awk '{ print "00:16:3e:"$1":"$2":"$3 }'
00:0c:29:f1:4b:c4
root@linux ~ # echo -n 00:16:3e; dd bs=1 count=3 if=/dev/random 2>/dev/null |hexdump -v -e '/1 ":%02X"';
00:60:2F:43:D6:32

3. Random MAC

root@linux ~ # dd if=/dev/urandom bs=1 count=6 2>/dev/null | od -tx1 | head -1 | cut -d' ' -f2- | awk '{ print $1":"$2":"$3":"$4":"$5":"$6 }'
5a:6e:6d:e4:d5:7d
root@linux ~ # echo $[RANDOM%10]$[RANDOM%10]:$[RANDOM%10]$[RANDOM%10]:$[RANDOM%10]$[RANDOM%10]:$[RANDOM%10]$[RANDOM%10]:$[RANDOM%10]$[RANDOM%10]:$[RANDOM%10]$[RANDOM%10]
03:02:70:16:48:42
root@linux ~ # echo 00$(hexdump -n5 -e '/1 ":%02X"' /dev/random)
00:1B:D2:63:4B:46
root@linux ~ # echo `openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'`
c0:ac:9b:aa:6a:73
root@linux ~ # openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'
root@linux ~ # echo $(od -An -N6 -t xC /dev/urandom) | sed -e 's/ /:/g'
b2:a5:48:03:29:a6
root@linux ~ # perl -e 'for ($i=0;$i<6;$i++){@m[$i]=int(rand(256));} printf "%X:%X:%X:%X:%X:%X\n",@m;'
98:9A:7A:3D:32:53

And to convert lower to upper

root@linux ~ # echo $(od -An -N6 -t xC /dev/urandom) | sed -e 's/ /:/g' | tr '[:lower:]' '[:upper:]'
45:02:7D:69:06:0F

Beware, completely random MACs are not guaranteed to be "unicast".