1、脚本完整内容如下:

#!/bin/bash
# ***************************************************************************
# * @脚本名称:modify-ip.sh
# * @脚本作者:xxx@xx.com
# * @编写时间:2024-06-22 15:52
# * @脚本版本:1.0
# * @脚本描述:Shell script
# ***************************************************************************

# 1.定义相关变量
echo -e "\033[31m 1.定义相关变量"
echo -e "\033[31m===========================================================================================================\033[0m"
default_path=/etc/sysconfig/network-scripts/
host_ens=$(find /etc/sysconfig/network-scripts/ -name ifcfg-ens* | awk  'BEGIN{FS="/"}{print $NF}')
protocol_value=$(cat ${default_path}${host_ens} | grep BOOTPROTO | awk -F '"' '{print $2}')
echo -e "\033[31m >> 变量定义已完成 \033[0m"
echo -e "\n\n"

# 2.让用户选择是否需要修改IP地址
echo -e "\033[31m 2.请选择是否修改IP地址 \033[0m"
echo -e "\033[31m===========================================================================================================\033[0m"
read -p ' >> 请确认是否修改IP地址(y/n):' choice
echo -e "\n\n"

# 3.通过IF语句,分别执行修改和不修改时的操作
echo -e "\033[31m 3.配置IP地址 \033[0m"
echo -e "\033[31m===========================================================================================================\033[0m"
if [ ${choice} != y ];then
  echo -e "已选择不修改IP地址,将退出脚本" && exit
fi

read -p "请输入新的IP地址:" new_ipaddr
read -p "请输入新的子网掩码:" new_netmask
read -p "请输入新的网关地址:" new_gateway
read -p "请输入新的首选DNS:" new_dns1
read -p "请输入新的备用DSN:" new_dns2

if [ ${protocol_value} == dhcp ];then
  sed -i 's/.*ONBOOT.*/ONBOOT="yes"/g' ${default_path}${host_ens}
  sed -i 's/.*BOOTPROTO.*/BOOTPROTO="static"/g' ${default_path}${host_ens}
  echo -e "IPADDR=${new_ipaddr}\nNETMASK=${new_netmask}\nGATEWAY=${new_gateway}\nDNS1=${new_dns1}\nDNS2=223.5.5.5" >> ${default_path}${host_ens}
  echo -e "\033[31m >> IP地址配置完成 \033[0m"
elif [ ${protocol_value} == static ];then
  sed -i 's/.*ONBOOT.*/ONBOOT="yes"/g' ${default_path}${host_ens} && \
  sed -i "s/.*IPADDR.*/IPADDR=${new_ipaddr}/g" ${default_path}${host_ens} && \
  sed -i "s/.*NETMASK.*/NETMASK=${new_netmask}/g" ${default_path}${host_ens} && \
  sed -i "s/.*GATEWAY.*/GATEWAY=$new_gateway/g" ${default_path}${host_ens} && \
  sed -i "s/.*DNS1.*/DNS1=${new_dns1}/g" ${default_path}${host_ens} && \
  sed -i "s/.*DNS2.*/DNS2=${new_dns2}/g" ${default_path}${host_ens} && \
  echo -e "\033[31m >> IP地址配置完成 \033[0m"
else
  echo -e "IP地址未修改"
fi
echo -e "\n\n"


# 4.查看脚本执行结果
echo -e "\033[31m 4.查看网络配置文件修改结果 \033[0m"
echo -e "\033[31m===========================================================================================================\033[0m"
echo -e "新的IP地址为:$(awk -F "=" '/IPADDR/{print $2}' ${default_path}${host_ens})"
echo -e "新的子网掩码为:$(awk -F "=" '/NETMASK/{print $2}' ${default_path}${host_ens})"
echo -e "新的网关地址为:$(awk -F "=" '/GATEWAY/{print $2}' ${default_path}${host_ens})"
echo -e "新的首选DNS为:$(awk -F "=" '/DNS1/{print $2}' ${default_path}${host_ens})"
echo -e "新的备用DNS为:$(awk -F "=" '/DNS2/{print $2}' ${default_path}${host_ens})"
echo -e "\n\n"


# 5.重启网络服务
echo -e "\033[31m 5.重启网络服务 \033[0m"
echo -e "\033[31m===========================================================================================================\033[0m"
echo -e "\033[31m >> 网络服务重启已完成 \033[0m"
systemctl restart network

2、脚本执行效果如下:

【shell脚本】静态IP地址配置_sed