Имя узла с точкой в приглашении в 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-ретранслятор.