shell脚本 修改网卡配置

#!/bin/bash

# 备份网络配置文件
backup_file="/etc/network-config-backup-$(date +"%Y%m%d%H%M%S")"
sudo cp /etc/network/interfaces $backup_file

# 获取系统中的所有网卡
interfaces=$(ifconfig -s | awk '{print $1}' | tail -n +2)

# 提示用户选择要配置的网卡
PS3="请选择要配置的网卡: "
select interface in $interfaces
do
  if [ -n "$interface" ]; then
    break
  else
    echo "无效的选择,请重新选择。"
  fi
done

# 提示用户选择IP配置方式
PS3="请选择IP配置方式(1. 静态IP 2. 动态IP): "
select ip_mode in "静态IP" "动态IP"
do
  case $ip_mode in
    "静态IP")
      # 输入验证函数 - 检查输入是否是合法的IP地址
      validate_ip() {
        local ip=$1
        local stat=1

        # 检查IP地址格式
        if [[ $ip =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then
          stat=0
          local IFS='.' 
          local ip_arr=($ip)
          
          # 检查每个字段是否在合法范围
          for octet in ${ip_arr[@]}; do
            if [[ $octet -lt 0 || $octet -gt 255 ]]; then
              stat=1
              break
            fi
          done
        fi

        return $stat
      }

      # 获取新的静态IP地址
      read -p "请输入新的静态IP地址: " ip_address

      # 进行输入验证
      validate_ip $ip_address
      if [ $? -eq 0 ]; then
        break
      else
        echo "无效的IP地址,请重新输入。"
      fi
      ;;
    "动态IP")
      # 清除之前的静态IP配置
      sudo dhclient -r $interface
      break
      ;;
    *)
      echo "无效的选择,请重新选择。"
      ;;
  esac
done

# 提示用户输入其他配置
if [ "$ip_mode" == "静态IP" ]; then
  read -p "请输入新的子网掩码: " subnet_mask
  read -p "请输入新的网关: " gateway
fi

# 输入验证函数 - 检查输入是否是合法的DNS服务器地址
validate_dns() {
  local dns=$1
  local stat=1

  # 检查DNS服务器地址格式
  if [[ $dns =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+( [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)*$ ]]; then
    stat=0
  fi

  return $stat
}

# 提示用户输入DNS服务器地址
read -p "请输入新的DNS服务器地址(多个DNS服务器用空格分隔): " dns_servers

# 进行输入验证
validate_dns "$dns_servers"
if [ $? -ne 0 ]; then
  echo "无效的DNS服务器地址,请重新输入。"
  exit 1
fi

# 配置网卡信息
if [ "$ip_mode" == "静态IP" ]; then
  sudo sed -i "/iface $interface/,+5 s/^/#/" /etc/network/interfaces  # 注释掉之前的配置
  echo -e "iface $interface inet static\naddress $ip_address\nnetmask $subnet_mask\ngateway $gateway" | sudo tee -a /etc/network/interfaces
  sudo service networking restart
fi

# 配置DNS服务器
echo "nameserver $dns_servers" | sudo tee /etc/resolv.conf

# 显示修改后的网卡配置信息
echo -e "\n已成功修改 $interface 的配置信息:"
echo "IP地址: $ip_address"
echo "子网掩码: $subnet_mask"
echo "网关: $gateway"
echo "DNS服务器: $dns_servers"

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zyttrium

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值