shell脚本-更改服务器IP地址
Posted 互联网老辛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本-更改服务器IP地址相关的知识,希望对你有一定的参考价值。
前言
更换I服务器IP地址脚本
脚本源码
## 定义常量
ETH_NAME="ifcfg-ens33"
ETH_MASK="255.255.255.0"
ETH_GW="10.10.10.1"
ETH_BAK="/data/backup/`date +%F`"
ETH_DIR="/etc/sysconfig/network-scripts/"
cd $ETH_DIR
if [ ! -d $ETH_BAK ];then
mkdir -p $ETH_BAK
fi
\\cp $ETH_NAME $ETH_BAK
while true
do
## 按要求输入IP地址
read -p "Please Retry Input IPaddr,Example 1.1.1.1:" ETH_IP
echo $ETH_IP|grep -wE "^([0-9]1,3\\.)3[0-9]1,3$"
if [ $? -eq 0 ];then
## 四段IP地址
IP1=`echo $ETH_IP|awk -F. 'print $1'`
IP2=`echo $ETH_IP|awk -F. 'print $2'`
IP3=`echo $ETH_IP|awk -F. 'print $3'`
IP4=`echo $ETH_IP|awk -F. 'print $4'`
##四段IP地址需要符合要求
if [ $IP1 -gt 0 -a $IP1 -lt 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
ping -c 3 $ETH_IP >/dev/null
## 若可以ping通则正常
if [ $? -ne 0 ];then
echo $ETH_IP
break
else
echo "The $ETH_IP already config Server,Please Retry other IPaddr."
fi
fi
fi
echo
done
## DHCP是否开启
grep "dhcp" $ETH_NAME
if [ $? -eq 0 ];then
sed -i 's/dhcp/static/g' $ETH_NAME
cat>>$ETH_NAME <<EOF
IPADDR=$ETH_IP
NETMASK=$ETH_MASK
GATEWAY=$ETH_GW
EOF
echo "---------------"
cat $ETH_NAME
## 服务是否启动
## 若服务器没有启动,则先启动
read -p "Please Ensure Restart Network Service. Yes or No ?" INPUT
if [ $INPUT == "yes" -o $INPUT == "Y" -o $INPUT == "y" ];then
service network restart
else
\\cp $ETH_BAK/$ETH_NAME $ETH_DIR/
cat $ETH_NAME
fi
else
cd $ETH_DIR
## 是否更改服务器IP地址
read -p "The $ETH_NAME IPaddr is Static,Plesae ensure change Server IP: yes or no? " INPUT
#用户输入Y确认是否修改
if [ $INPUT == "yes" -o $INPUT == "Y" -o $INPUT == "y" ];then
sed -i "s/IPADDR=.*/IPADDR=$ETH_IP/g" $ETH_NAME
cat $ETH_NAME
read -p "Please Ensure Restart Network Service. Yes or No ?" INPUT
if [ $INPUT == "yes" -o $INPUT == "Y" -o $INPUT == "y" ];then
service network restart
else
\\cp $ETH_BAK/$ETH_NAME $ETH_DIR/
cat $ETH_NAME
fi
else
exit 0
fi
fi
总结
所有脚本一定要遵循演化规则,从小到大,从简单到复杂。
以上是关于shell脚本-更改服务器IP地址的主要内容,如果未能解决你的问题,请参考以下文章
Shell脚本 使用sed流编辑器一键修改CentOS网卡IP地址