脚本实现在CentOS系统下执行,将动态IP修改成固定IP,若原本为固定IP将询问是否修改IP
#!/bin/bash
#2020年7月11日
#将动态IP转换成静态IP,静态IP询问修改成其他静态IP
#################################################
function Check_linux_system(){
linux_version=$(cat /etc/redhat-release)
if [[ ${linux_version} =~ "CentOS" ]];then
echo -e "\033[32m 当前系统为 $linux_version \033[0m"
else
echo -e "\033[32m 当前系统不是CentOS,该脚本不支持\033[0m"
exit 1
fi
}
function insatll_static_ip(){
static_ip=$(ip a|grep ens33|grep inet|awk -F "/" '{ print $1 }'|awk -F " " '{ print $2 }')
static_gateway=$(echo $static_ip|awk -F "." '{ print $1"."$2"."$3".2" }')
network_name=ifcfg-$(ip a |grep inet |grep brd |awk -F ' ' '{ print $NF }')
cd /etc/sysconfig/network-scripts
mkdir -p back/$(date +%Y%m%d)
cp $network_name back/$(date +%Y%m%d)/${network_name}.$(date +%H%M)
grep -aiw "dhcp" $network_name
if [ $? -eq 0 ];then
sed -i "s/dhcp/static/g" $network_name
echo "IPADDR=$static_ip" >>$network_name
echo "GATEWAY=$static_gateway" >>$network_name
echo "NETMASK=255.255.255.0" >>$network_name
echo "DNS1=61.139.2.69" >>$network_name
systemctl restart network
echo -e "\033[32m 当前IP为 $static_ip \033[0m"
echo -e "\033[32m 当前网关为 $static_gateway \033[0m"
echo -e "\033[32m 当前子网掩码为 255.255.255.0 \033[0m"
else
#echo -e "\033[32m 当前为静态IP,不需要更改 \033[0m"
read -p "当前IP $hhm_ip 为静态IP,是否需要更改(yes/no):" input
if [ $input == "y" -o $input == "Y" -o $input == "yes" -o $input == "YES" ];then
read -p "输入需要更改的IP:" change_ip
sed -i "s/IPADDR=$static_ip/IPADDR=$change_ip/g" $network_name
change_gateway=$(echo $change_ip|awk -F "." '{ print $1"."$2"."$3".2" }')
sed -i "s/GATEWAY=$static_gateway/GATEWAY=$change_gateway/g" $network_name
echo -e "\033[32m 当前IP为 $change_ip \033[0m"
echo -e "\033[32m 当前网关为 $change_gateway \033[0m"
echo -e "\033[32m 当前子网掩码为 255.255.255.0 \033[0m"
systemctl restart network
else
echo -e "\033[32m 当前IP为 $static_ip \033[0m"
echo -e "\033[32m 当前网关为 $static_gateway \033[0m"
echo -e "\033[32m 当前子网掩码为 255.255.255.0 \033[0m"
exit 1
fi
fi
}
Check_linux_system && \
insatll_static_ip