自动安装 Ubuntu 20.04 服务器:如何从 DHCP 服务器获取主机名?

自动安装 Ubuntu 20.04 服务器:如何从 DHCP 服务器获取主机名?

在旧版本的 Ubuntu 上(使用传统安装程序),我能够从 DHCP 服务器填充主机名。然后我使用netcfg/get_hostname=内核参数选项传递它。

从 20.04 开始,经典安装程序不再存在。如何使用 DHCP 服务器更改主机名,而不是使用用户数据文件中的固定主机名?

我曾尝试使用 late-commands 来使用 shell 脚本通过 sed 更改主机名,但是没有效果。

答案1

您可以使用 DHCP 挂钩脚本来完成此操作。

  1. 创建新文件:
sudoedit /etc/dhcp/dhclient-exit-hooks.d/hostname
  1. 将以下代码粘贴到文件中,保存并关闭:
#!/bin/sh
# Filename:     /etc/dhcp/dhclient-exit-hooks.d/hostname
# Purpose:      Used by dhclient-script to set the hostname of the system
#               to match the DNS information for the host as provided by
#               DHCP.
#


# Do not update hostname for virtual machine IP assignments
if [ "$interface" != "eth0" ] && [ "$interface" != "wlan0" ]
then
    return
fi


if [ "$reason" != BOUND ] && [ "$reason" != RENEW ] \
   && [ "$reason" != REBIND ] && [ "$reason" != REBOOT ]
then
        return
fi

echo dhclient-exit-hooks.d/hostname: Dynamic IP address = $new_ip_address
hostname=$(host $new_ip_address | cut -d ' ' -f 5 | sed -r 's/((.*)[^\.])\.?/\1/g' )
echo $hostname > /etc/hostname
hostname $hostname
echo dhclient-exit-hooks.d/hostname: Dynamic Hostname = $hostname
  1. 使文件可读...
chmod a+r /etc/dhcp/dhclient-exit-hooks.d/hostname
  1. 释放现有的 DHCP 租约...
sudo dhclient -r
  1. 并得到一个新的。
sudo dhclient

答案2

使用部分答案这里,如果您在自动安装 YAML 的身份部分中将主机名设置为localhost,则机器的下次启动将配置为其 DHCP 颁发的主机名。

要在安装程序期间从 DHCP 设置主机名,您可能需要使用Christopher H 的回答在早期命令部分内。

相关内容