Esto es lo mismo pero mas compacto , y al estilo UNIX , verifica que la
cadena sea ###.###.###.### y ademas el rango de cada octeto (0-255) , en
vez de echo puedes usar dialog , gdialog o zenity ...etc para mostrar la
notificaciones adecuadas.


espero que te sirva ,...

saludos ,yosle



yosle@yosle:~/Escritorio$ ./prueba.sh 200.2.2.1
IP correcta
yosle@yosle:~/Escritorio$ ./prueba.sh 200.2.2.1gufgf
IP incorrecta
yosle@yosle:~/Escritorio$ ./prueba.sh 500.2.2.1
IP incorrecta
yosle@yosle:~/Escritorio$ cat prueba.sh

#!/bin/sh

validar () {
    if [[ $1 =~ ^[[:digit:]]+$ ]] &&
       (( $1 >= 0 && $1 <= 255 ))
    then
        echo "0"
        return 0
    else
        echo "1"
        return 1
    fi
}

saveIFS=$IFS
IFS='.'

# obtener ip desde el 1er paramentro de linea de comandos
ip=($1)

IFS=$saveIFS
for octet in ${ip[@]}
do
    if ! validar $octet > /dev/null
    then
        validar=1
    fi
done

# si validar es 1
[[ $validar != 1 ]] && echo "IP correcta" || echo "IP incorrecta"







El Mie, 27 de Abril de 2011, 1:31 pm, KZKG^Gaara escribió:
> Hola gente,
> Tengo un script en el cual le pido al usuario una dirección IP (Ej.
> 192.168.40.16), luego con esa IP hago una cierta cantidad de cosas.
>
> O sea, el usuario introduce la IP que desea y listo, presiona [Enter]
> (lo que sucede después no lo nota).
>
> Pero.... ¿y si el usuario pone letras en vez de números?
> Ese es mi problema. Desearía que cuando le pida la IP, en caso de que el
> usuario escriba letras o algo así, que se le muestre un mensaje de error
> mediante por ejemplo "dialog --msgbox "error"".
>
> Alguien puede ayudarme en esto?
> Ah, hago esto 100% en bash.
>
> Saludos y gracias por adelantado.
> ------------ próxima parte ------------
> Se ha borrado un adjunto en formato HTML...
> URL:
> <http://listas.jovenclub.cu/pipermail/gutl-l/attachments/20110427/624ab8e3/attachment.htm>
> ______________________________________________________________________
> Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
> Gutl-l@jovenclub.cu
> https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l
>


-- 

Ubuntu User number is # 30682




______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l

Responder a