Transformador de direcciones MAC

Por si le resulta útil a alguien más.

Nombre de archivo: “bin/mac-trans.sh”.

#!/bin/sh

#Autor: Octavio Alvarez, alvarezp@alvarezp.ods.org.
#License: GPLv2.

if [ $# -ne 2 ]; then
	echo
	echo "usage: $0 output-format mac-string"
	echo
	echo "output-format is one of the following:"
	echo "  -c  Cisco form  : 0123.4567.89ab"
	echo "  -l  Linux form  : 01-23-45-67-89-AB"
	echo "  -w  Windows form: 01:23:45:67:89:AB"
	echo "  -p  Plain lower : 0123456789ab"
	echo "  -P  Plain upper : 0123456789AB"
	echo
	echo "If the mac-string is not recognized, it is left unchanged."
	echo
	echo "Example: $0 -c 01-23-45-67-89-AB   # Output is 0123.4567.89ab"
	exit
fi

SEP='-.:'

while getopts "clwpP" OPT; do
	case $OPT in
	c)	FORM='\1\2.\3\4.\5\6'
		CASE='y/ABCDEF/abcdef/'
		;;
	l)	FORM='\1-\2-\3-\4-\5-\6'
		CASE='y/abcdef/ABCDEF/'
		;;
	w)	FORM='\1:\2:\3:\4:\5:\6'
		CASE='y/abcdef/ABCDEF/'
		;;
	p)	FORM='\1\2\3\4\5\6'
		CASE='y/ABCDEF/abcdef/'
		;;
	P)	FORM='\1\2\3\4\5\6'
		CASE='y/abcdef/ABCDEF/'
		;;
	esac
done

shift $(($OPTIND-1))

BYTE='([0-9A-Fa-f]{2})'

MAC_REGEX=$BYTE[$SEP]?$BYTE[$SEP]?$BYTE[$SEP]?$BYTE[$SEP]?$BYTE[$SEP]?$BYTE

echo $1 | sed -re "s/$MAC_REGEX/$FORM/; $CASE"

One Comment

  1. jesusarmando says:

    quiobo, si yo tambien quiero ver la pelicula de los transformers…

Leave a Reply

Please leave these two fields as-is: