MST
星途 面试题库

面试题:Bash 脚本实现复杂网络配置切换

假设你在一台 Linux 机器上需要在两种不同的网络配置之间切换,一种是静态 IP 配置,另一种是动态获取 IP(DHCP)配置。请编写一个 Bash 脚本实现这两种配置之间的快速切换,并且在切换后能确保网络正常工作,同时可以通过脚本参数指定要切换到的配置类型。
26.6万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试
#!/bin/bash

# 静态IP配置文件路径
STATIC_CONFIG="/etc/netplan/00-installer-config.yaml"
# DHCP配置模板
DHCP_CONFIG_TEMPLATE="
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: true
"

# 静态IP配置模板
STATIC_CONFIG_TEMPLATE="
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      addresses: [192.168.1.100/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
"

if [ "$1" == "static" ]; then
    echo "$STATIC_CONFIG_TEMPLATE" | sudo tee "$STATIC_CONFIG"
    echo "切换到静态IP配置"
elif [ "$1" == "dhcp" ]; then
    echo "$DHCP_CONFIG_TEMPLATE" | sudo tee "$STATIC_CONFIG"
    echo "切换到DHCP配置"
else
    echo "请指定正确的参数,例如:$0 static 或者 $0 dhcp"
    exit 1
fi

# 应用新的网络配置
sudo netplan apply
echo "网络配置已应用,网络应该正常工作"

说明:

  1. 上述脚本假设网络配置文件路径为/etc/netplan/00-installer-config.yaml,不同的Linux发行版可能路径不同,需根据实际情况调整。
  2. 静态IP配置中的IP地址、网关和DNS服务器等参数是示例,实际使用请替换为真实值。
  3. 脚本通过判断传入的第一个参数是static还是dhcp来决定切换到哪种配置,并应用新的配置。