Código fonte de validação de mac-adress em shell script.
Útil para iptables e outras aplicações que exigem um formato especifico de mac-address.
Esconder código-fonte
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
echo "Digite um mac valido no formato: ff:dd:aa:dd:aa:12"
read MAC
if [[ $MAC =~ ^[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}$ ]]
then
echo "o mac digitado é um mac valido"
else
echo "o mac digitado é um mac invalido"
fi
exit 0
Scripts recomendados
Seletor de wallpaper para fluxbox modo grafico
Script de monitoramento de host por icmp (ping )
Instala/Remove/Atualiza com APT [gerenciador_apt.sh]
Instalar temas GTK no /usr/share/themes ou no diretório pessoal
Criar imagem ISO a partir de CD
Comentários
Um mac address é um conjunto de caracteres hexadecimal, ou seja, de A-F 0-9 não diferenciando maiusculas de minusculas.
Complementando:
Vc poderia "emagrecer" essa regex:
^[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}$
assim:
^\([0-9A-Fa-f]\{2\}:\)\{5\}[0-9A-Fa-f]\{2\}$
Mensagem
Complementando:
Vc poderia "emagrecer" essa regex:
^[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}:[0-9A-Fa-f]{2}$
assim:
^\([0-9A-Fa-f]\{2\}:\)\{5\}[0-9A-Fa-f]\{2\}$
testei digitar um mac com essa expressao ,^\([0-9A-Fa-f]\{2\}:\)\{5\}[0-9A-Fa-f]\{2\}$ , que vc passou mas não funciona. depois tente digitar um mac-adress nesse formato 00:dd:aa:22:aa:dd:01 e ve se funciona. Testei algumas alteraçoes mesmo assim nao conseguir funcionar.
Mensagem
testei digitar um mac com essa expressao ,^\([0-9A-Fa-f]\{2\}:\)\{5\}[0-9A-Fa-f]\{2\}$ , que vc passou mas não funciona. depois tente digitar um mac-adress nesse formato 00:dd:aa:22:aa:dd:01 e ve se funciona. Testei algumas alteraçoes mesmo assim nao conseguir funcionar.
Usando o grep:
$ echo "00:dd:aa:22:aa:dd" | grep "^\([0-9A-Fa-f]\{2\}:\)\{5\}[0-9A-Fa-f]\{2\}$"
00:dd:aa:22:aa:dd (Casou)
$ echo "00:dd:aa:22:aa:dd:01" | grep "^\([0-9A-Fa-f]\{2\}:\)\{5\}[0-9A-Fa-f]\{2\}$"
Não casa!
Se for usar o interpretador built-in de regex do bash, vc vai ter que tirar as contra-barras eu acho... =P
Mensagem
Usando o grep:
$ echo "00:dd:aa:22:aa:dd" | grep "^\([0-9A-Fa-f]\{2\}:\)\{5\}[0-9A-Fa-f]\{2\}$"
00:dd:aa:22:aa:dd (Casou)
$ echo "00:dd:aa:22:aa:dd:01" | grep "^\([0-9A-Fa-f]\{2\}:\)\{5\}[0-9A-Fa-f]\{2\}$"
Não casa!
Se for usar o interpretador built-in de regex do bash, vc vai ter que tirar as contra-barras eu acho... =P
Assim fica ainda melhor....
guerra3paz@ubuntu:~$ ifconfig | egrep -io '([0-9a-f]{2}:){5}[0-9a-f]{2}'
00:16:c5:35:5a:7f
36:9a:3e:b9:1e:56
00:19:e7:63:5b:a6
Mensagem
Assim fica ainda melhor....
guerra3paz@ubuntu:~$ ifconfig | egrep -io '([0-9a-f]{2}:){5}[0-9a-f]{2}'
00:16:c5:35:5a:7f
36:9a:3e:b9:1e:56
00:19:e7:63:5b:a6
Gostei deste metodo abreviado e usei na validação de ip tambem.
ifconfig | egrep -io '([0-9]{1,3}\.){3}[0-9]{1,3}'
bom q consigo pegar ip e mascara
Mensagem
Gostei deste metodo abreviado e usei na validação de ip tambem.
ifconfig | egrep -io '([0-9]{1,3}\.){3}[0-9]{1,3}'
bom q consigo pegar ip e mascara
Contribuir com comentário
Enviar