33 lines
735 B
Bash
Executable File
33 lines
735 B
Bash
Executable File
#!/bin/bash
|
|
# validate_ipv4.sh - Check if a string is a valid IPv4 address
|
|
# Usage: validate_ipv4.sh <IP_ADDRESS>
|
|
# Returns: 0 if valid, 1 if invalid
|
|
# Output: "valid" or "invalid"
|
|
|
|
validate_ipv4() {
|
|
local ip="$1"
|
|
local regex='^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$'
|
|
|
|
if [[ ! $ip =~ $regex ]]; then
|
|
echo "invalid"
|
|
return 1
|
|
fi
|
|
|
|
for i in "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}" "${BASH_REMATCH[3]}" "${BASH_REMATCH[4]}"; do
|
|
if (( i > 255 )); then
|
|
echo "invalid"
|
|
return 1
|
|
fi
|
|
done
|
|
|
|
echo "valid"
|
|
return 0
|
|
}
|
|
|
|
# Main execution
|
|
if [[ $# -ne 1 ]]; then
|
|
echo "Usage: $0 <IP_ADDRESS>" >&2
|
|
exit 2
|
|
fi
|
|
|
|
validate_ipv4 "$1" |