centos一键修改ip脚本

一键修改ip脚本

###环境

centos 7.6

需求

1. 配置静态ip
2.配置dhcp模式
3.修改之前确认是否修改,如果不修改需要恢复原IP信息
4.判断用户输入的IP是否正确,如果不正确,让其循环输入,直到正确为止

###脚本

#!/bin/bash
# 2020-07-18-15:47:18
# ipaddr change v2
# by bubble_xu
################################
NETWORK_PATH="/etc/sysconfig/network-scripts"
#if execute user root
if [ ! $UID -eq 0 ];then
	echo -e "\033[31muser must be root!\033[0m"
	exit
fi
#choose one network device
DEVICE_LIST=`ifconfig|grep flags|grep -v lo|cut -d":" -f1`
PS3=`echo -e "\033[32mplease choose one network device:\033[0m"`
select device in $DEVICE_LIST
do
	if [ ! -z $device ];then
		echo -e "\033[33m-----you choose to config $device-------\033[0m"
		break
	fi
	echo -e "\033[31minvalid option\033[0m"
done

#create network file
function config_network(){
	mode=$1
	cat>$NETWORK_PATH/ifcfg-${device}<<-EOF
	TYPE="Ethernet"
	PROXY_METHOD="none"
	BROWSER_ONLY="no"
	BOOTPROTO="$mode"
	DEFROUTE="yes"
	IPV4_FAILURE_FATAL="no"
	IPV6INIT="yes"
	IPV6_AUTOCONF="yes"
	IPV6_DEFROUTE="yes"
	IPV6_FAILURE_FATAL="no"
	IPV6_ADDR_GEN_MODE="stable-privacy"
	NAME="$device"
	UUID="$uuid"
	DEVICE="$device"
	ONBOOT="yes"
	EOF
	if [ $mode == "static" ];then
		cat>>$NETWORK_PATH/ifcfg-${device}<<-EOF
		IPADDR=$ipaddr
		NETMASK=$netmask
		GATEWAY=$gateway
		DNS1=114.114.114.114
		DNS2=8.8.8.8
		EOF
	fi
}
#backup network device file
if [ -f /$NETWORK_PATH/ifcfg-$device ];then
	uuid=`grep UUID $NETWORK_PATH/ifcfg-${device} |sed 's/UUID=//g;s/"//g'`
	mv $NETWORK_PATH/ifcfg-$device $NETWORK_PATH/ifcfg-${device}.bak
elif [ -f /$NETWORK_PATH/ifcfg-${device} ];then
	uuid=`grep UUID $NETWORK_PATH/ifcfg-${device}.bak |sed 's/UUID=//g;s/"//g'`
fi
#choose mode,ipaddr,netmask,gateway
while true
do
    read -p "please input network mode(static|dhcp):" mode
    if [ $mode == "static" ];then
		while true
		do
        	read -p "please input ip addr:" ipaddr
			echo $ipaddr|grep "^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$" >/dev/null 2>&1
			if [ $? -eq 0 ];then
				break
			fi
			echo -e "\033[31minvalid ipaddr\033[0m"
		done 
        read -p "please input netmask:" netmask
        read -p "please input gateway:" gateway
        config_network $mode
        break
    elif [ $mode == "dhcp" ];then
        config_network $mode
        break
    fi
	echo -e "\033[31minvalid mode option\033[0m"
done 
#confirm network config info
echo -e "\033[32m-------confirm network configuration info-------\033[0m"
cat $NETWORK_PATH/ifcfg-$device
while true
do
	read -p "yes to change,no to recovery!please input(yes|no):" option
	if [ $option == "no" ];then 
		mv $NETWORK_PATH/ifcfg-${device}.bak $NETWORK_PATH/ifcfg-${device}
		echo -e "\033[33m----end ip change configuration---\033[0m"
		exit
	elif [ $option == "yes" ];then
		echo -e "\033[33m----start ip change configuration---\033[0m"
		break
	fi
	echo -e "\033[31minvalid option\033[0m"
done
#restart network
systemctl restart network
ping -c 2 www.baidu.com
if [ $? -eq 0 ];then
    echo -e "\033[32mip addr change success!\033[0m"
    rm -rf $NETWORK_PATH/ifcfg-${device}.bak
    exit 0
fi
mv $NETWORK_PATH/ifcfg-${device}.bak $NETWORK_PATH/ifcfg-${device}
systemctl restart network
echo "ip addr change falied,restore configuration!"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值