我需要暂时动态地netplan.conf
从( )中添加和删除 IP 地址/etc/netplan/myNetplanConfig.conf
。
在早期版本中,该ip
命令可用于临时将 IP 地址添加到接口,但我似乎无法在 Ubuntu 22.04 中找到它的替代品,并且在人网络计划或netplan 文档。
我曾考虑过netplan.conf
用 bash 来生成,但我希望有一个更干净的解决方案。
#!/bin/bash
# Update the netplan configuration file
cat << EOF > /etc/netplan/myNetplanConf.yaml
network:
ethernets:
# 1st network interface
eth0:
dhcp4: false
addresses: [192.168.1.10/24]
version: 2
EOF
# Apply the changes to the network configuration
sudo netplan apply
使用当前解决方案意味着添加 IP 地址静态地(他们将居住超过单个启动周期)并且netplan.conf
每次添加或删除 IP 地址时都必须应用。
netplan.conf
另一个解决方案是使用命令添加 IP 地址sed
。
# Search for the existing ip addresses (.10) in the interface eth0 and append the new ip addresses (.11 .12 ...) to the list.
sed -i '/eth0/,/^\s*$/{/\s*addresses:\s*\[.*192\.168\.1\.(10).*\]/{s//&, 192.168.1.11, 192.168.1.12/}}' /etc/netplan/myNetplanConf.conf
# Apply the changes to the network configuration
sudo netplan apply
...并使用相同方法将其移除。
# Search for the ip addresses (.11 and .12) in the interface eth0 and delete the corresponding entries from the netplan.conf file.
sed -i '/eth0/,/^\s*$/{/\s*addresses:\s*\[.*192\.168\.1\.(11|12).*\]/d}' /etc/netplan/myNetplanConf.conf
# Apply the changes to the network configuration
sudo netplan apply
- 为什么该
ip
命令不能用于netplan
? - 有没有更好的解决方案来添加/删除 IP 地址
netplan
? - ...还是说我已经完全偏离路径了?
答案1
该命令在 Ubuntu 22.04 中仍然存在。它是作为 的一部分默认安装的软件包ip
的一部分。iproute2
ubuntu-minimal
您不需要通过 来推送网络状态的临时更改netplan
,因为它毕竟是一个配置工具。
答案2
使用 netplan 时,更改 netplan yaml 最有意义...
有一个很好的工具用于处理 yaml 叫做yq
。至少添加 IP 很简单。
yq e '.network.ethernets.enp2s0.addresses += ["11.11.11.11/24" ]' network.yaml > new.yaml
删除看起来像
yq e '.network.ethernets.enp2s0.addresses -= ["11.11.11.11/24" ]' network.yaml > new.yaml
无论如何都必须netplan apply
要做。