script configurar tarjeta de red
Publicado: 9 Abril, 2011 - 11:41 script configurar tarjeta de red
Hola buen@s,
Visto que soy un negado par ala programación acudo a vosotros, llevo una semana para realizar el primer paso del script, lo único que quiero es que pida " " introducir la ip " y si se introduce una letra ó un formato no esperado devuelva el mensaje " de direccion incorrecta "
Os pongo el código:
#!/bin/bash
clear
echo "Introduzca IP"
read IP
if [ $IP == 0 ] ; then
echo "El formato de la direccion ip es incorrecto $IP "
fi
Seguro que el problema está en el if pero no veo como solucionarlo.
Un saludo
- Inicie sesión o regístrese para enviar comentarios
- 1191 lecturas


Intentalo encomillando.De todos modos ahí dice si la variable IP es igual a cero.
if [ "$IP" == "0 "] ; thenY creo que lo que buscas es algo parecido a :
$ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$Edito: fijate acá
Edito2: Creo que ésto tiene lo que vos buscas ,adecuándolo a tu necesidad claro.
En sh no se compara numero con = ni ==
if [ $IP -eq 0 ] ; thenEn sh no se compara numero con = ni ==
if [ $IP -eq 0 ] ; thenTenes toda la razón, el '=' ; '= =', es para comparar cadenas
Pato, cuanta razon si asi funciona, pero si pongo una direccióm correcta me da un error muy raro:
[: 12: Illegal number:192.168.1.1
Ahora solo me queda averiguar, que tengo que hacer, para en el caso que pongan una letra , un numero de tres cifras ( Ej: 999 000 ) les salga el mensaje y automaticamente vuelva a la linea en la que estaban, me explico; si la dirección IP es incorrecta que vuelva a la linea " Introduzca su dirección IP "
Para realizar lo anterior seria con un
echo "Introducir IP"
read IP
if [ $IP -eq 0 ] ; then
echo " El formato de la dirección ip no es correcto "
else
echo " Introducir IP"
read IP
fi
Un saludo
Pato, cuanta razon si asi funciona, pero si pongo una direccióm correcta me da un error muy raro:
[: 12: Illegal number:192.168.1.1
Ahora solo me queda averiguar, que tengo que hacer, para en el caso que pongan una letra , un numero de tres cifras ( Ej: 999 000 ) les salga el mensaje y automaticamente vuelva a la linea en la que estaban, me explico; si la dirección IP es incorrecta que vuelva a la linea " Introduzca su dirección IP "
Para realizar lo anterior seria con un
echo "Introducir IP"
read IP
if [ $IP -eq 0 ] ; then
echo " El formato de la dirección ip no es correcto "
else
echo " Introducir IP"
read IP
fi
Un saludo
solo unas cosas. Para que vuelva a preguntar tenes que usar un bucle como wile:
while [ true ]; doif [ IP es correcta ]; then
break;
else
echo -e "ip incorrecta"
fi
done
otra cosa no necesitas el echo antes del read, puede ser así:
echo "Introducir IP"read IP
es lo mismo que:
read -p "Introducir IP " IPsaludos
edito:
ahora que probe, el true va solo sin el test ([]):
prueba este ejemplo:
#!/bin/bashwhile true ; do
read -p "Introducir IP " IP
if [ $IP == 34.32 ]; then
echo correcto...
break;
else
echo -e "ip incorrecta"
fi
done
Para filtrar de modo mas exacto podrías hacer
if [ -z echo $IP | grep -E '^([0-9]{1,3}\.){3}[0-9]{1,3}$' ] ; thenClaro que ahí pasaría una dirección del tipo 895.578.985.548 pero en fin.. es un poco mas fino
Algo estoy realizando mal porque me da el siguiente error:
Introducir direccion IP 192.168.1.1
[: 14: 192.168.1.1: unexpected operator
-e El formato no es el correcto
PD. COmo saco el caracter ^
PD. COmo saco el caracter ^
Depende del modelo de teclado que tengas pero :
AltGr + ^Para filtrar de modo mas exacto podrías hacer
if [ -z echo $IP | grep -E '^([0-9]{1,3}\.){3}[0-9]{1,3}$' ] ; thenClaro que ahí pasaría una dirección del tipo 895.578.985.548 pero en fin.. es un poco mas fino
Creo que lo que buscas es algo así:
grep '^\(2[0-5][0-9]\.\|1\{0,1\}[0-9]\{1,2\}\.\)\{3\}\(2[0-5][0-9]\.\|1\{0,1\}[0-9]\{1,2\}\)$'
Indistinguible de un jeroglífico, como toda buena regex

Algo no funciona entra en un bucle infinito:
Introducir direccion IP read: 14: arg count
[: 14: missing ]
-e El formato no es el correcto
Introducir direccion IP read: 14: arg count
[: 14: missing ]
-e El formato no es el correcto
Introducir direccion IP read: 14: arg count
[: 14: missing ]
-e El formato no es el correcto
Introducir direccion IP read: 14: arg count
[: 14: missing ]
El codigo
#!/bin/bash
clear
while true ; do
read -p " Introducir direccion IP "
if [ -z echo $IP | grep -E '^\(2[0-5][0-5]\.\|1\{0,1}[0-9]\{1,2\}\.\)\{$
break;
else
echo -e " El formato no es el correcto"
fi
done
Un saludo y gracias