Fix config HOSTNAME

master
Dmitry Razumov 2 years ago
parent 0d6bce544b
commit 34c966a71c
Signed by: asmeron
GPG Key ID: 50BC1DB583B79706

@ -0,0 +1,78 @@
#!/bin/bash
#
# Initial script for Live operating system
# This script are launching before starting init from linux-live script.
# Current dir allways must be set to root (/)
# All system path must be relative, except initrd dirs
ENABLED=yes
[[ ${ENABLED} != yes ]] && exit 0
DEBUGMODE=no
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
SOURCE=${ROOTFS}/usr/lib/ublinux/os-config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
debug_mode "$0" "$@"
SYSCONF="${ROOTFS}/${SYSCONF}"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
exec_hostname(){
local PARAM="$@"
[[ -n ${PARAM} ]] && eval "${PARAM%%=*}='${PARAM#*=}'"
SET_HOSTNAME="${HOSTNAME}"
[[ -z ${SET_HOSTNAME} ]] && SET_HOSTNAME=ublinux-live
tail -c1 -- hosts | grep -qx $'\n' || echo >> ${ROOTFS}/etc/hosts
HOSTS_1="127.0.0.1 sb-ssl.l.google.com safebrowsing.clients.google.com safebrowsing.cache.l.google.com"
grep -q "^\s*${HOSTS_1}\s*$" ${ROOTFS}/etc/hosts || echo "${HOSTS_1}" >> ${ROOTFS}/etc/hosts
HOSTS_2="127.0.0.1 ${SET_HOSTNAME%%.*}"
grep -q "^\s*${HOSTS_2}\s*$" ${ROOTFS}/etc/hosts || echo "${HOSTS_2}" >> ${ROOTFS}/etc/hosts
echo "${SET_HOSTNAME}" > ${ROOTFS}/etc/hostname
[[ ${SET_HOSTNAME} != ${SET_HOSTNAME#*.} ]] && DOMAIN="${SET_HOSTNAME#*.}"
if [[ ${DOMAIN} != "" ]]; then
HOSTNAME="${SET_HOSTNAME%%.*}.${DOMAIN}"
HOSTS_3="127.0.0.1 ${SET_HOSTNAME}"
grep -q "^\s*${HOSTS_3}\s*$" ${ROOTFS}/etc/hosts || echo "${HOSTS_3}" >> ${ROOTFS}/etc/hosts
## Указать доменных пользователей AccountsService, что-бы были видны для выбора логина в DM
ls -d ${ROOTFS}/home/*@*/ 2>/dev/null | xargs -ri basename {} | xargs -ri touch ${ROOTFS}/var/lib/AccountsService/users/{}
## Домен для сервера dhcpd
sed s/"option domain-name .*"/"option domain-name \"${DOMAIN}\";"/g -i ${ROOTFS}/etc/dhcpd.conf
sed s/"option nis-domain .*"/"option nis-domain \"${DOMAIN}\";"/g -i ${ROOTFS}/etc/dhcpd.conf
## Имя хоста записать в конфиг с постфиксом домена
sed /^HOSTNAME=/d -i ${ROOTFS}/etc/ublinux/config
echo "HOSTNAME=${SET_HOSTNAME}" >> ${ROOTFS}/etc/ublinux/config
fi
}
exec_hostname_live(){
[[ -z ${ROOTFS} ]] || return 0
local PARAM="$@"
[[ -n ${PARAM} ]] && eval "${PARAM%%=*}='${PARAM#*=}'"
SET_HOSTNAME="${HOSTNAME}"
[[ -z ${SET_HOSTNAME} ]] && SET_HOSTNAME=ublinux-live
[[ ${SET_HOSTNAME} != ${SET_HOSTNAME#*.} ]] && DOMAIN="${SET_HOSTNAME#*.}"
[[ ${DOMAIN} != "" ]] && ubconfig -q set network DOMAIN="${DOMAIN}"
hostnamectl set-hostname ${SET_HOSTNAME}
## Если меняется имя хоста в запущенных X, то новое имя добавляем в xauth
who | grep "(:[0-9.]*)$" | cut -d' ' -f1 | xargs -ri su {} -c "xauth list | sed 's|^.*/|su {} -c \\\\\"xauth add ${SET_HOSTNAME}/|;s|$|\\\\\"|'" | xargs -ri sh -c '{}'
}
################
##### MAIN #####
################
if [[ -z $@ || $1 == set ]]; then
shift
KERNEL_HOSTNAME=$(cmdline_value hostname)
[[ ${KERNEL_HOSTNAME} == "" ]] || HOSTNAME=${KERNEL_HOSTNAME}
exec_hostname $@
exec_hostname_live $@
elif [[ $1 == remove ]]; then
shift
exec_hostname $@
exec_hostname_live $@
fi

@ -23,22 +23,6 @@ SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
echo "127.0.0.1 sb-ssl.l.google.com safebrowsing.clients.google.com safebrowsing.cache.l.google.com" >> etc/hosts
grep -q "127\.0\.0\.1\s{1,}${HOSTNAME%%.*}\s*$" etc/hosts || echo "127.0.0.1 ${HOSTNAME%%.*}" >> etc/hosts
if [[ ${DOMAIN} != "" ]]; then
HOSTNAME="${HOSTNAME%%.*}.${DOMAIN}"
grep -q "127\.0\.0\.1\s{1,}${HOSTNAME}\s*$" etc/hosts || echo "127.0.0.1 ${HOSTNAME}" >> etc/hosts
## Указать доменных пользователей AccountsService, что-бы были видны для выбора логина в DM
ls -d home/*@*/ 2>/dev/null | xargs -ri basename {} | xargs -ri touch var/lib/AccountsService/users/{}
## Домен для сервера dhcpd
sed -i s/"option domain-name .*"/"option domain-name \"${DOMAIN}\";"/g etc/dhcpd.conf
sed -i s/"option nis-domain .*"/"option nis-domain \"${DOMAIN}\";"/g etc/dhcpd.conf
## Имя хоста записать в конфиг с постфиксом домена
sed -i /^HOSTNAME=/d etc/ublinux/config
echo "HOSTNAME=${HOSTNAME}" >> etc/ublinux/config
fi
echo "${HOSTNAME}" > etc/hostname
#if [ "$UBLINUXSERVER" != "" ] ;then
# sed -i s/.*ublinux-server.*/"$UBLINUXSERVER UBLinux-Server"/ etc/hosts
Loading…
Cancel
Save