#!/bin/sh
#< Simple script to validate IPv4 addresses - use as a filter
# Returns 1 if error, 0 if validation successful
# KW 05/03/05
prog=$(basename ${0})
read input
set -- ${input}
if [ "$#" -ne "1" ]; then
echo "${prog}: Usage: some_command | ${prog}" >&2
exit 1
fi
quad=${1}
oldIFS=${IFS}
IFS=.
set -- ${quad}
if [ "$#" -ne "4" ]; then
echo "${prog}: ip_address must have 4 quads" >&2
exit 1
fi
for oct in ${1} ${2} ${3} ${4}; do
echo ${oct} | egrep "^[0-9]+$" >/dev/null 2>&1
if [ "$?" -ne "0" ]; then
echo "${prog}: ${oct}: not numeric" >&2
exit 1
else
if [ "${oct}" -lt "0" -o "${oct}" -gt "255" ]; then
echo "${prog}: ${oct}: out of range" >&2
exit 1
fi
fi
done
echo "${quad}" | grep "\.$" >/dev/null 2>&1
if [ "$?" -eq "0" ]; then
echo "${prog}: trailing period - invalid" >&2
exit 1
fi
echo "${quad}" | grep "^\." >/dev/null 2>&1
if [ "$?" -eq "0" ]; then
echo "${prog}: leading period - invalid" >&2
exit 1
fi
echo "${quad}" | grep "\.\." >/dev/null 2>&1
if [ "$?" -eq "0" ]; then
echo "${prog}: empty quad - invalid" >&2
exit 1
fi
# if we're here, we're validated
exit 0