MAC ADDRESS [RESOLVIDO]

1. MAC ADDRESS [RESOLVIDO]

WILLIAM FELIPE DUTRA ABREU DA SILVA
will_drop

(usa Ubuntu)

Enviado em 14/03/2011 - 08:30h

Bom dia galera do vol

estou quebrando a cabeça, para tentar desenvolver uma logica para validação de mac address

sem : ou . ou - nada alem do endereço por inteiro ex: 0800271b2b3c algo do tipo

estive pensando em algo que lê-se cada letra ou numero por vez e valida-se dentro dos parametros 0-9 a-f

mas nao consigo chegar a uma for de fazer isso :S

se alguem tiver uma dica, ou uma luz de como posso conseguir fico grato.



  


2. MELHOR RESPOSTA

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 14/03/2011 - 08:44h

Usando o Bash 3.x

mac="000c61000000"

if [[ $mac =~ ^[0-9A-Fa-f]{12}$ ]]
then
echo "MAC valido."
else
echo "MAC invalido!"
exit 1
fi

Usando o GREP (pegando seu código de retorno):

echo "$mac" | grep -q "^[0-9A-Fa-f]\{12\}$"
[ $? -eq 0 ] && echo "MAC valido." || echo "MAC invalido!"


3. Re: MAC ADDRESS [RESOLVIDO]

WILLIAM FELIPE DUTRA ABREU DA SILVA
will_drop

(usa Ubuntu)

Enviado em 14/03/2011 - 08:50h

caramba q loco

vo testar

ah eu entendi q essa linha faz a validação $mac =~ ^[0-9A-Za-z]{12}$

mas poderia decifrar ela para mim?




4. Re: MAC ADDRESS [RESOLVIDO]

WILLIAM FELIPE DUTRA ABREU DA SILVA
will_drop

(usa Ubuntu)

Enviado em 14/03/2011 - 09:04h

Infelizmente nao ta dando certo, ele nao valida o mac valido, sempre da como invalido ...

valida_mac(){

clear
echo ""
echo "O endereco MAC deve conter apenas letras de A-F e numeros de 0-9 formando 6 pares - EX:0800271A2B3C"
echo ""
echo -n "Informe o endereco MAC:"
read MAC

if [[ $MAC =~ ^[0-9A-Fa-f]{12}$ ]]
then
echo "MAC valido."
else
echo "MAC invalido!"
valida_mac
fi
}


5. Re: MAC ADDRESS [RESOLVIDO]

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 14/03/2011 - 09:07h

"^[0-9A-Fa-f]\{12\}$"

Isso é uma expressão regular e deve ser lida da mais ou menos da seguinte forma:

"Case com uma string que inicie '^' com uma sequência numérica entre '0 e 9' ou uma sequência alfabética entre 'a e f' maiúscula ou minúscula, que se repita exatamente 12 vezes."

Numa ER um par de '[]' faz referência a uma lista de caracteres. Já o par '{}' determina que uma ocorrência case exatamente uma quantidade x de vezes.





6. Re: MAC ADDRESS [RESOLVIDO]

WILLIAM FELIPE DUTRA ABREU DA SILVA
will_drop

(usa Ubuntu)

Enviado em 14/03/2011 - 09:12h

hmm saquei, interessante esse jogo de '{}' e '[]' que so pode fazer, desconhecia isso, vou tentar arruma o script para q ele funcione


7. Re: MAC ADDRESS [RESOLVIDO]

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 14/03/2011 - 09:25h

Como falei a construção "[[ xxx =~ yyy ]]" só é válida no Bash a partir da versão 3.x (especificamente a 3.17) em diante. Se quiser algo mais portável, utilize a opção com o GREP.

PS. Testei seu "pseudo-código" aqui (no bash 4.1.5) e foi de boa!


8. Re: MAC ADDRESS [RESOLVIDO]

WILLIAM FELIPE DUTRA ABREU DA SILVA
will_drop

(usa Ubuntu)

Enviado em 14/03/2011 - 09:43h

GNU bash, versão 4.1.5(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
Licença GPLv3+: GNU GPL versão 3 ou posterior <http://gnu.org/licenses/gpl.html>

essa é a minha versao do bash deveria funcionar entao q estranho , versao da distro nao iria influenciar ne? bash é bash ate onde eu lembro





9. Re: MAC ADDRESS [RESOLVIDO]

WILLIAM FELIPE DUTRA ABREU DA SILVA
will_drop

(usa Ubuntu)

Enviado em 14/03/2011 - 14:20h

NAO FUNCIONA NAO KRA, testei no msm kernel q vc e da o mesmo erro de antes

[: 22: [: unexpected operator




10. Re: MAC ADDRESS [RESOLVIDO]

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 14/03/2011 - 14:51h

Atente para o fato de que você deve usar o "hash-bang":

#!/bin/bash

No seu script para que a construção '[[ xxx =~ yyy ]]' funcione!

E volto a repetir: Se quer maior portabilidade use a opção com o GREP.


11. Re: MAC ADDRESS [RESOLVIDO]

WILLIAM FELIPE DUTRA ABREU DA SILVA
will_drop

(usa Ubuntu)

Enviado em 14/03/2011 - 15:01h

hmm, entao ainda to batendo os coco aqui

o bixinho ta assim :



#!/bin/bash

clear

echo -n "Informe o endereco MAC:"

read MAC

echo "$MAC" | grep -q "^[0-9A-Fa-f]\{12\}$"
[ $? -eq 0 ] && echo "MAC valido." || echo "MAC invalido!"

informo para ele o mac da minha maquina 001EECA8928

e ele diz q é invalido hehehe


12. Falta de atenção

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 14/03/2011 - 15:21h

A ER casa com 12 caracteres e você só informou 11!



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts