三个网卡
一个网卡由于管理,自动获取ip
另外2个为业务ip
地址为:192.168.1.5/24
192.168.1.6/24
网关都为192.168.1.1
解决了ip link add 添加的虚拟网卡 重启系统ip不能保存问题。
解决了ip link add 添加的虚拟网卡 设置了ip ,插拔网线ip不能保存问题。
#!/bin/bash
echo "以下是所有可用的网卡及其IP和MAC地址:"
for interface in $(ip -o -4 addr show | awk -F ' |/' '{print $2}' | uniq); do
ip_address=$(ip -o -4 addr show $interface | awk -F ' |/' '{print $7}')
mac_address=$(ip link show $interface | awk '/ether/ {print $2}')
echo "网卡名称: $interface, IP地址: $ip_address, MAC地址: $mac_address"
done
function valid_ip() {
local ip=$1
local valid_regex="^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"
if [[ $ip =~ $valid_regex ]]; then
return 0
else
return 1
fi
}
function valid_subnet_mask() {
local mask=$1
if [[ $mask -ge 0 && $mask -le 32 ]]; then
return 0
else
return 1
fi
}
echo "以下是可用的网卡:"
ip -o -4 addr show | awk -F ' |/' '{print $2}' | uniq
echo -n "请输入要绑定的网卡名称(例如:enp0s8):"
read interface
echo -n "请输入新虚拟网卡的名称(例如:ppp001):"
read vnic_name
while true; do
echo -n "请输入新虚拟网卡的IP地址(例如:192.168.250.5):"
read ip_address
if valid_ip $ip_address; then
break
else
echo "输入的IP地址不合法,请重新输入。"
fi
done
while true; do
echo -n "请输入子网掩码(例如:24):"
read subnet_mask
if valid_subnet_mask $subnet_mask; then
break
else
echo "输入的子网掩码不合法,请重新输入。"
fi
done
while true; do
echo -n "请输入网关地址(例如:192.168.250.1):"
read gateway
if valid_ip $gateway; then
break
else
echo "输入的网关地址不合法,请重新输入。"
fi
done
echo "创建虚拟网卡..."
# 使用 nmcli 创建虚拟网卡
sudo nmcli connection add type macvlan con-name $vnic_name ifname $vnic_name dev "$interface" mode bridge
echo "分配IP地址和子网掩码..."
sudo nmcli connection modify $vnic_name ipv4.addresses "${ip_address}/${subnet_mask}"
echo "设置网关..."
sudo nmcli connection modify $vnic_name ipv4.gateway "$gateway"
sudo nmcli connection modify $vnic_name ipv4.method "manual"
echo "设置虚拟网卡启动.."
sudo nmcli connection up $vnic_name
sudo nmcli connection modify $vnic_name connection.autoconnect yes
echo "以下是新创建的虚拟网卡信息:"
ip addr show $vnic_name
echo "虚拟网卡创建并设置成功!"
echo "虚拟网卡创建并设置成功!开始重启网卡"
systemctl restart network
感谢ChatGPT ,一起完成的脚本制作。
机器人wx FzAIRobot