Имя узла с точкой в приглашении в Debian
Содержание
Введение
Иногда в сети существуют серверы с одинаковыми именами узлов, но в разных доменах. Например, это могут быть серверы postgresql.lo.example.net и postgresql.core.example.net.
По умолчанию в приглашении командной строки отображается не полное имя узла, а лишь имя узла до первой точки. Для приведённого выше примера в командной строке по умолчаиню будет отображаться одинаковое имя узла - postgresql. При администрировании таких серверов через консоль может возникнуть путаница.
Для исправления ситуации можно прописать в файл /etc/hostname полное имя узла (или отличительную часть имени) и настроить приглашения так, чтобы в них отображалось полное содержимое этого файла. Для приведённого выше примера под отличительной частью имени имеются в виду имена postgresql.lo и postgresql.core.
/etc/hostname
Итак, первым делом прописываем в файл отличительную часть имени или полное имя:
postgresql.core
/etc/hosts
Далее нужно прописать в файл /etc/hosts запись, соответствующую имени, указанному в /etc/hostname:
192.168.192.168 postgresql.core.example.net postgresql.core
/etc/bash.bashrc
Это файл глобальных настроек интерпретатора командной строки bash. В нём нужно заменить в настройках переменной PS1 последовательность \h на последовательность \H:
if ! [ -n "${SUDO_USER}" -a -n "${SUDO_PS1}" ]; then
PS1='${debian_chroot:+($debian_chroot)}\u@\H:\w\$ '
fi
/etc/skel/.bashrc
В этом файле находится пример файла настроек интерпретатора командной строки bash. В нём нужно заменить в настройках переменной PS1 последовательность \h на последовательность \H:
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\H\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\H:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\H: \w\a\]$PS1"
;;
*)
;;
esac
/home/*/.bashrc
В домашних каталогах пользователей есть файлы с настройками интерпретаторов командной строки bash. При создании нового пользователя в его домашний каталог копируется файл /etc/skel/.bashrc. В этот файл стоит внести те же правки, которые были внесены в файл /etc/skel/.bashrc, а именно - стоит заменить последовательность h на последовательность \H во всех переменных PS1.
Известные проблемы
Мне не известен способ поменять тему писем, рассылаемых планировщиком задач crontab. По умолчанию в теме письма используется имя узла до первой точки, а сама тема имеет следующий вид:
Cron <root@postgresql> /usr/local/bin/dbbackup.sh
Для изменения темы письма можно прибегнуть к перенаправлению вывода скрипта на вход утилиты mail, которая предоставляется, например, пакетом bsd-mailx. Для этого нужно поменять задачу в планировщике cron, например, следующим образом:
5 0 * * * /usr/local/bin/backup.sh | mail -s 'Cron <root@postgresql.core> /usr/local/bin/dbbackup.sh' root
Другой способ изменения темы письма описан в статье Смена темы письма в Postfix. Им можно воспользоваться лишь в том случае, если в качестве локального SMTP-ретранслятора используется Postfix. Настройка Postfix в качестве локального SMTP-ретранслятора описана в статье Postfix как локальный SMTP-ретранслятор.