64 lines
1.7 KiB
Plaintext
64 lines
1.7 KiB
Plaintext
|
#!/bin/bash
|
||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||
|
### BEGIN INIT INFO
|
||
|
# Provides: openvz-fix-etchosts
|
||
|
# Required-Start: $network
|
||
|
# Required-Stop:
|
||
|
# Should-Start:
|
||
|
# Should-Stop:
|
||
|
# Default-Start: 2 3 4 5
|
||
|
# Default-Stop: 0 1 6
|
||
|
# X-Interactive: true
|
||
|
# Short-Description: fix /etc/hosts in openvz containers
|
||
|
# Description: fix /etc/hosts for services (e.g. slapd) which need that
|
||
|
# the local hostname does *not* resolve to localhost. In
|
||
|
# practice, remove hostname from the line
|
||
|
# 127.0.0.1 hostname localhost localhost.localdomain
|
||
|
# in /etc/hosts
|
||
|
### END INIT INFO
|
||
|
|
||
|
PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
||
|
LANG=fr_FR.UTF-8
|
||
|
export PATH LANG
|
||
|
|
||
|
. /lib/lsb/init-functions
|
||
|
|
||
|
function is_openvz_ct() {
|
||
|
local ctid="$(grep envID /proc/self/status | awk '{print $2}')"
|
||
|
[ -n "$ctid" -a "$ctid" != "0" ]
|
||
|
}
|
||
|
|
||
|
function fix_etchosts() {
|
||
|
local host hostname ip
|
||
|
|
||
|
# supprimer hostname --> 127.0.0.1
|
||
|
hostname="$(</etc/hostname)"
|
||
|
sed -i '/^\(127.0.0.1\|::1\)/s/'"$hostname"'\(\.[^ \t]*\)\?[ \t]*//g' /etc/hosts
|
||
|
|
||
|
# ajouter host hostname --> ip
|
||
|
host="$(hostname -f 2>/dev/null)"
|
||
|
hostname="$(hostname -s 2>/dev/null)"
|
||
|
local ip="$(LANG=C host "$host" 2>/dev/null | awk '/address / { gsub(/^.*address /, ""); print }' | head -n1)"
|
||
|
if [ -n "$ip" ] && ! grep -Fq "$ip" /etc/hosts; then
|
||
|
echo "$ip $host $hostname" >>/etc/hosts
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
case "$1" in
|
||
|
start)
|
||
|
if is_openvz_ct; then
|
||
|
log_action_msg "Fixing /etc/hosts..."
|
||
|
fix_etchosts
|
||
|
log_end_msg 0
|
||
|
fi
|
||
|
;;
|
||
|
stop)
|
||
|
;;
|
||
|
*)
|
||
|
log_action_msg "Usage: /etc/init.d/$NAME start"
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
exit 0
|