IP修改shell脚本分享

#!/bin/bash
#2020年04月27日15:57:10
#auto change server ip
#by author www.cnbugs.com
########################
ETH_IP="$1"
ETH_NAME="ens33"
ETH_DNS="223.5.5.5"
ETH_MASK="255.255.255.0"
ETH_GATEWAY="192.168.1.254"
ETH_BAK="/data/backup/`date +%Y%m%d%H%M`"
ETH_DIR="/etc/sysconfig/network-scripts/"

function change_ip(){
cat > ifcfg-$ETH_NAME <<EOF
TYPE=Ethernet
BOOTPROTO=static
DEVICE=$ETH_NAME
ONBOOT=yes
IPADDR=$ETH_IP
NETMASK=$ETH_MASK
GATEWAY=$ETH_GATEWAY
DNS1=$ETH_DNS
EOF
cat ifcfg-$ETH_NAME
echo -e "\033[32mThe server ip change succeded.\033[0m"
}

if [ $# -eq 0 ];then
	echo -e "\033[32m------------------\033[0m"
	echo -e "\033[32mUsage:{/bin/sh $0 192.168.1.111|192.168.1.200|help}\033[0m"
	exit
fi

while true
do
	IP1=$(echo $ETH_IP|cut -d"." -f1)
	IP2=$(echo $ETH_IP|cut -d"." -f2)
	IP3=$(echo $ETH_IP|cut -d"." -f3)
	IP4=$(echo $ETH_IP|cut -d"." -f4)
	if [ ! -z $IP1 ];then
		if [ $IP1 -ge 1 -a $IP1 -le 255 -a $IP2 -ge 0 -a $IP2 -le 255 -a $IP3 -ge 0 -a $IP3 -le 255 -a $IP4 -ge 0 -a $IP4 -le 255 ];then
			echo $ETH_IP
			break
		else
			echo -e "\033[32m------------------\033[0m"
			read -p "Please retry input server ip: " ETH_IP
		fi
	fi
	read -p "Please retry input server ip: " ETH_IP
done

cd $ETH_DIR 
if [ ! -d $ETH_BAK ];then
	mkdir -p $ETH_BAK
fi
\cp ifcfg-$ETH_NAME $ETH_BAK
grep "dhcp" ifcfg-$ETH_NAME
if [ $? -eq 0 ];then
	change_ip
else
	echo -e "\033[32m------------------\033[0m"	
	cat ifcfg-$ETH_NAME
	read -p "The server static ipaddr already exist,please ensure change other static ip? " INPUT
	if [ $INPUT == "yes" -o $INPUT == "y" -o $INPUT == "Y" ];then
		change_ip
	fi
fi

read -p "The server ip change succeded,please restart network.service yes or no?" INPUT
if [ $INPUT == "yes" -o $INPUT == "y" -o $INPUT == "Y" ];then
	systemctl restart network.service
else
	\cp $ETH_BAK/ifcfg-$ETH_NAME $ETH_DIR/
	cat ifcfg-$ETH_NAME
fi

发表评论

后才能评论