Translation(s): English - Italiano - Русский


Переименование компьютера

Эта страница объясняет, как изменить hostname системы (т.е. переименовать компьютер/сервер)

Смотрите также: hostname(1).

Базовые сетевые настройки

invoke-rc.d hostname.sh start
invoke-rc.d networking force-reload
invoke-rc.d network-manager force-reload

ToDo: is it useful to reload network-manager?

systemd

В версиях Debian с установленным systemd, можно использовать команду "hostnamectl set-hostname mymachine". Этот инструмент зависит от dbus поэтому обязательно установите его в первую очередь.

Специфические приложения

avahi

Avahi использует так называемые публикации (объявления) локальным службам. Если вы изменяли файлы /etc/avahi/* вы должны выполнить:

invoke-rc.d avahi-daemon force-reload

CUPS

CUPS это Common Unix Printing System.

Нужно настроить файл /etc/printcap.

Вы должны поменять hostname в любой такой линии: Kyocera_TASKalfa_3050ci|Kyocera TASKalfa 3050ci:rm=debian:rp=Kyocera_TASKalfa_3050ci:

Вы должны перезапустить службу, чтобы изменения вступили в силу.

ejabberd

Обратитесь к оф. документации https://docs.ejabberd.im/.

Exim

Перенастроить Exim (это затронет /etc/exim4/update-exim4.conf.conf и /etc/mailname):

dpkg-reconfigure exim4-config

Или настроить вручную /etc/exim4/update-exim4.conf.conf (hostname=). После этого надо перезапустить службу.

Mailname

Перенастроить Exim (см. выше) или настроить вручную /etc/mailname. После этого не надо перезапускать службу.

Сообщение дня

Настроить /etc/motd. После этого не надо перезапускать службу.

OpenSSH

Настроить /etc/ssh/ssh_host_rsa_key.pub, /etc/ssh/ssh_host_dsa_key.pub, /etc/ssh/ssh_host_ed25519_key.pub и /etc/ssh/ssh_host_ecdsa_key.pub (root@hostname в конце). После этого надо перезапустить службу.

Самоподписанный SSL сертификат

Пересоздать самоподписанный сертификат, созданный пакетом the ssl-cert используя правильный hostname вашего компьютера.

make-ssl-cert generate-default-snakeoil --force-overwrite

После этого надо перезапустить службу использующие это, например apache2.

ssmtp

Легковесная программа Ssmtp, для отправки только через SMTP.

Настроить /etc/ssmtp/ssmtp.conf (hostname=, и т. д.). После этого не надо перезапускать службу.

sysklogd

Перезапустите службу sysklogd.

fail2ban

fail2ban scan logs to detect connection failures and can ban IP on too many failures.

The hostname may be in the sender mail address in /etc/fail2ban/jail.local. You need to reload the service.

lvm

Logical Volume Manager (LVM) is a device mapper target that provides logical volume management.

Hostname появляется в резервной копии конфигурационного файла /etc/lvm/backup/<your Volume Group>.

Скрипт, который может вам помочь

Опасный скрипт

Вы должны понимать, что данный скрипт может быть опасен для вашей системы. Вы должны проверить наличие всех файлов grep -rl "$old" /etc, которые должны быть модифицированы перед запуском этого скрипта:

   1 #!/bin/bash
   2 #
   3 usage() {
   4    echo "usage : $0 <new hostname>"
   5    exit 1
   6 }
   7 
   8 [ "$1" ] || usage
   9 
  10 old=$(hostname)
  11 new=$1
  12 
  13 grep "$old" /etc/ -rl 2>/dev/null |
  14 while read file
  15 do
  16       sed "s:$old:$new:g" "$file" > "$file.tmp"
  17       mv -f "$file.tmp" "$file"
  18 done

Улучшенный вариант скрипта

Этот скрипт будет делать тоже самое, что и скрипт выше, но он будет спрашивать о каждом файле, который надо изменить, прежде чем он отредактирует файл.

   1 #!/bin/bash
   2 #
   3 
   4 # Fetching new and old hostname
   5 OLD_HOSTNAME=$(hostname)
   6 NEW_HOSTNAME=$1
   7 
   8 WHIPTAIL_TITLE="Changing hostname"
   9 WHIPTAIL_BACKTITLE="ShrimpDev <dev@csoellinger.at>"
  10 WHIPTAIL_TEXT="Below you will find a checklist with all files where we found your old hostname \"${OLD_HOSTNAME}\" inside /etc\n\nPlease check which files we should update to your new hostname \"${NEW_HOSTNAME}\""
  11 
  12 not_root() {
  13     echo "ERROR: You have to be root to execute this script"
  14     exit 1
  15 }
  16 
  17 usage() {
  18     echo "usage : $0 <new hostname> [Optional:--backup/Set backup mode on] [Optional:--debug/Set debug mode on]"
  19     exit 1
  20 }
  21 
  22 # Check if user is root
  23 [ $EUID != 0 ] && not_root
  24 
  25 # Check if we have at least one parameter
  26 [ "$1" ] || usage
  27 
  28 [ "$1" == "--backup" ] && usage
  29 [ "$1" == "--debug" ] && usage
  30 
  31 DEBUG="NO"
  32 BACKUP="NO"
  33 
  34 if [ "$2" == "--debug" ] || [ "$3" == "--debug" ]; then
  35     DEBUG="YES"
  36 fi
  37 
  38 if [ "$2" == "--backup" ] || [ "$3" == "--backup" ]; then
  39     BACKUP="YES"
  40 fi
  41 
  42 [ "$DEBUG" == "YES" ] && echo "DEBUG (NO FILES WILL BE CHANGED)"
  43 [ "$BACKUP" == "YES" ] && echo "BACKUP MODE ON"
  44 
  45 # Grep all possible targets
  46 TARGETS=($(grep "$OLD_HOSTNAME" /etc/ -rl))
  47 let TARGETSLENGTH=${#TARGETS[@]}
  48 
  49 CHECKLIST=()
  50 for ((i=0; i<${#TARGETS[@]}; i++)); do
  51     CHECKLIST+=("${TARGETS[$i]}" "" "ON")
  52 done
  53 
  54 CHECKLIST_RESULT=$(whiptail --clear --fb --title "$WHIPTAIL_TITLE" --backtitle "$WHIPTAIL_BACKTITLE" --checklist "$WHIPTAIL_TEXT" 30 80 $TARGETSLENGTH "${CHECKLIST[@]}" 3>&2 2>&1 1>&3)
  55 CHECKLIST_RESULT=${CHECKLIST_RESULT//\"/}
  56 CHECKLIST_RESULT_ARR=(`echo $CHECKLIST_RESULT | tr ' ' '\n'`)
  57 
  58 clear
  59 
  60 for CHECKLIST_ITEM in "${CHECKLIST_RESULT_ARR[@]}"; do
  61     echo "sed \"s:${OLD_HOSTNAME}:${NEW_HOSTNAME}:g\" \"${CHECKLIST_ITEM}\" > \"${CHECKLIST_ITEM}.tmp\""
  62     [ "$DEBUG" == "NO" ] && sed "s:$OLD_HOSTNAME:$NEW_HOSTNAME:g" "$CHECKLIST_ITEM" > "$CHECKLIST_ITEM.tmp"
  63 
  64     if [ "$2" == "--backup" ]; then
  65         echo "cp \"${CHECKLIST_ITEM}\" \"${CHECKLIST_ITEM}.BCK\""
  66         [ "$DEBUG" == "NO" ] && cp "$CHECKLIST_ITEM" "$CHECKLIST_ITEM.BCK"
  67     fi
  68 
  69     echo "mv -f \"${CHECKLIST_ITEM}.tmp\" \"${CHECKLIST_ITEM}\""
  70     [ "$DEBUG" == "NO" ] && mv -f "$CHECKLIST_ITEM.tmp" "$CHECKLIST_ITEM"
  71 
  72     echo ""
  73 done
  74 
  75 exit 0

Другой вариант скрипта

#!/bin/bash
# 
usage() {
   echo "usage : $0 <new hostname>"
   exit 1
}

[ "$1" ] || usage

old=$(hostname)
new=$1

for file in \
   /etc/exim4/update-exim4.conf.conf \
   /etc/printcap \
   /etc/hostname \
   /etc/hosts \
   /etc/ssh/ssh_host_rsa_key.pub \
   /etc/ssh/ssh_host_dsa_key.pub \
   /etc/motd \
   /etc/ssmtp/ssmtp.conf
do
   [ -f $file ] && sed -i.old -e "s:$old:$new:g" $file
done


Смотрите также