
yuttttttt
(usa Outra)
Enviado em 13/02/2017 - 18:00h
msoliver escreveu:
yuttttttt escreveu:
Como faço para validar uma opção do case, estou querendo validar se o que o usuario digitou no campo read é um ip.
exemplo:
read myip
case $myip in
([0-999]).([0-999]).([0-999]).([0-999]))echo "$myip é um ip"
;;
*)echo "digite seu ip corretamente"
;;
esac
Tentei assim e recebo erro de sintaxe.
Boa tarde.
A REGEX para validar o IP, é:
'([1-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9][0-9]?\.|1[0-9]{2}\.|2[0-4][0-9]\.|25[0-5]\.){2}([0-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])'
Portanto:
[[ "$myip" =~ ^([1-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9][0-9]?\.|1[0-9]{2}\.|2[0-4][0-9]\.|25[0-5]\.){2}([0-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]] && echo -e "\n $myip é um IP VáLIDO" || echo -e "\n $myip é INVáLIDO"
Att.:
marcelo oliver
to tentando entende-lo, mas está dificil kkkk porque preciso adicionar a porta que esqueci de mencionar, tipo 138.158.102.145:8080, mas não to conseguindo, não consigo entender o padrão desse REGEX.
Daria para fazer assim, acho mais simples, mas agora entendi o jeito que você kkkkk você quer validar dentro do padrão ip, pdc, vou usar assim
if [[ "$var" =~ ^([0-9]{3,}|[0-9]{2,}|[0-9]{1,})\.([0-9]{3,}|[0-9]{2,}|[0-9]{1,})\.([0-9]{3,}|[0-9]{2,}|[0-9]{1,})\.([0-9]{3,}|[0-9]{2,}|[0-9]{1,})\:([0-9]{5,}|[0-9]{4,}|[0-9]{3,}|[0-9]{2,}|[0-9]{1,})$ ]];then
echo "valido"
fi