mirror of
https://github.com/freeipa/ansible-freeipa.git
synced 2026-06-11 11:15:55 +00:00
infra/image/system-services: Enhance checks, also fix reverse zone
Checks for IPv4 addresses have been added and reverse zone handling for fixipaip.sh The services are logging StandardOutput and StandardError to journal now.
This commit is contained in:
@@ -1,24 +1,62 @@
|
||||
#!/bin/bash -eu
|
||||
|
||||
function valid_fqdn()
|
||||
{
|
||||
local name="${1}"
|
||||
|
||||
[[ "${name}" =~ [[:space:]] ]] && return 1
|
||||
[[ "${name}" =~ \. ]] || return 1
|
||||
[[ "${name}" =~ \.\. ]] && return 1
|
||||
for i in ${name//./ }; do
|
||||
[[ "${i}" =~ ^[a-z0-9_/]+$ ]] || return 1
|
||||
done
|
||||
[[ "${name}" == "localhost.localdomain" ]] && return 1
|
||||
return 0
|
||||
}
|
||||
|
||||
function valid_ipv4()
|
||||
{
|
||||
local ip="${1}"
|
||||
local rematch="^([0-9]{1,3}\.){3}[0-9]{1,3}$"
|
||||
|
||||
[[ "${ip}" =~ ${rematch} ]] || return 1
|
||||
for i in ${ip//./ }; do
|
||||
[[ ${i} -le 255 ]] || return 1
|
||||
done
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
HOSTNAME=$(hostname)
|
||||
IP=$(hostname -I | cut -d " " -f 1)
|
||||
|
||||
if [ -z "${HOSTNAME}" ]; then
|
||||
if [ -z "${HOSTNAME}" ] || ! valid_fqdn "${HOSTNAME}" ; then
|
||||
echo "ERROR: Failed to retrieve hostname."
|
||||
exit 1
|
||||
fi
|
||||
if [ -z "${IP}" ]; then
|
||||
echo "ERROR: Failed to retrieve IP address."
|
||||
if [ -z "${IP}" ] || ! valid_ipv4 "${IP}" ; then
|
||||
echo "ERROR: Got invalid IPv4 address: '${IP}'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2143
|
||||
if [ -n "$(grep -P "[[:space:]]${HOSTNAME}" /etc/hosts)" ]; then
|
||||
sed -ie "s/.*${HOSTNAME}/${IP}\t${HOSTNAME}/" /etc/hosts
|
||||
echo "Fix NET:"
|
||||
echo " HOSTNAME: '${HOSTNAME}'"
|
||||
echo " IP: '${IP}'"
|
||||
echo
|
||||
|
||||
if grep -qE "^[^(#\s*)][0-9\.]+\s$HOSTNAME(\s|$)" /etc/hosts
|
||||
then
|
||||
sed -i.bak -e "s/.*${HOSTNAME}/${IP}\t${HOSTNAME}/" /etc/hosts
|
||||
else
|
||||
echo -e "$IP\t${HOSTNAME}" >> /etc/hosts
|
||||
echo -e "$IP\t${HOSTNAME} ${HOSTNAME%%.*}" >> /etc/hosts
|
||||
fi
|
||||
|
||||
echo "nameserver 127.0.0.1" > /etc/resolv.conf
|
||||
|
||||
echo "/etc/hosts:"
|
||||
cat "/etc/hosts"
|
||||
echo
|
||||
echo "/etc/resolv.conf:"
|
||||
cat "/etc/resolv.conf"
|
||||
|
||||
exit 0
|
||||
|
||||
Reference in New Issue
Block a user