如何在 Ubuntu 18.04 上通过脚本设置静态 IP?

如何在 Ubuntu 18.04 上通过脚本设置静态 IP?

我正在为我们的虚拟环境设置一个新的 Ubuntu 18.04 服务器模板,作为其中的一部分,我有一个在以前的版本上创建并使用过的脚本。

它所做的只是询问要使用的主机名、IP 设置和 NTP 服务器。然后,它使用 设置主机名hostnamectl,将名称添加到 hosts 文件,使用 设置 NTP 服务器ntpdate,将 IP 信息写出到/etc/network/interfaces,下载所有更新,应用它们并重新启动。

此脚本在 18.04 中不起作用,因为设置静态 IP 的方式已经发生了很大变化。那么如何以编程方式设置静态 IP/网络掩码/DNS/网关?

编辑:18.04 的这个安装默认安装了 Cloudinit,这就是让我困惑的地方。所以我要下载另一个 ISO 并使用它。

但为了简化我的问题,是否有一个可以安装的 CLI 工具,可以通过一个简单的命令为我完成此操作。例如cli-tool <IP> <SUBNET> <GATEWAY> <DNS1> <DNS2>

答案1

18.04使用网络计划. 看看它的手册页

您可以让您的脚本写入一个.yaml文件并使用或或/etc/netplan“编译”它netplan applynetplan trynetplan generate

此类文件的一个例子是:

ethernets:
  match:
    name: enp2s0
      addresses: [10.0.4.5/8]
      gateway4: 10.0.4.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4, 1.1.1.1, 9.9.9.9]
        search: [mycompany]

我不太熟悉网络计划。所以我让你探索并修复我可能犯的错误。

答案2

@solsTiCe 是正确的,但是/etc/network/interfaces仍然是配置网络的有效方法。

man interfaces

/etc/NetworkManager顺便说一下,还有路线。

man NetworkManager.conf

事实上,netplan 渲染为NetworkManager。所以它实际上只是 NetworkManager 和 Systemd 的语法糖。

更多详情请见netplan此处

相关内容