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='12.34.56'
		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='123456'
		CASE='y/ABCDEF/abcdef/'
		;;
	P)	FORM='123456'
		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"

Comentarios

Transformador de direcciones MAC — 1 comentario

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *