
NB: read will not block on /dev/urandom, so it may return early causing the last bytes of the MAC to be all 0's. Shall be the numeric value in the underlying codeset of the characterįollowing the single-quote or double-quote.

If the leading character is a single-quote or double-quote, the value Since you can print directly to a variable with printf -v myvar there is no fork/subshell needed to capture the result.Įxtracting the value of a character using printf is defined in POSIX printf documentation: LC_ALL=C printf "%02x:%02x:%02x:%02x:%02x:%02x\n" "'$"įirst line reads 6 characters from /dev/urandom then using the C character set print the 0-filled hex value of each character separated with a colon (the newline is optional but useful to print out the value). Just for fun, here is a pure bash version, tested against Bash 4.4.12(1)-release: read -N6 b
Jot comes with OS X and BSDs but not with most Linux distributions.

God -N6 -tx1 -An /dev/random|cut -c2-|tr \ :

Openssl rand -hex 6|fold -w2|paste -sd:. Here are five other options, all of which use random bits for the least significant bit of the most significant byte that indicates if the address is unicast or multicast and for the second-least significant bit of the most significant byte that indicates if the address is universally or locally administered.
