¿Cómo utilizar Shell para determinar si la IP es legal?
#!/bin/bash
#?Prueba?una?dirección?IP?para?validez:
#?Uso:
#?valid_ip?IP_ADDRESS
#?if?[[?$?-eq?0?]];?entonces?echo?bueno;?else?echo?malo;?fi
#OR
#?if?valid_ip?IP_ADDRESS;?entonces?echo?good;?else?echo?bad;?fi
#
función?valid_ip()
{
local?ip=$1
local?stat=1
si?[[ ?$ip?=~?^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{ 1, 3}$?]];?entonces
OIFS=$IFS
IFS='.'
ip=($ip)
IFS=$OIFS
[[?${ip[0]}?-le?255?amp;amp;?${ip[1]}?-le?255?\
amp;amp;?${ip[2]}?-le?255?amp;amp;?${ip[3]}?-le?255?]]
stat=$?
fi
retorno?$stat
}
#?Si?ejecutar?directamente,?ejecutar ?algunas?pruebas.
if?[[?"$(basename?$0?.sh)"?==?'valid_ip'?]];?entonces
ips= '
4.2.2.2
a.b.c.d
192.168.1.1
0.0.0.0
255.255.255.255
255.255.255.256
192.168.0.1
192.168.0
1234.123.123.123
para?ip?in?$ips
hacer
if?valid_ip?$ip;?then?stat='bueno';?else?stat='malo ';?fi
printf?"-20s:?s\n"?"$ip"?"$stat"
hecho
fi p> p>
Prueba esto