shell编程之服务器IP地址一键修改

发布时间:2021-09-20

  本shell脚本编程主要实现以下四个方面的功能:
1、实现将动态IP修改为静态IP
2、实现将静态IP修改为其他静态IP
3、实现修改之前确认是否修改,如果不修改需要恢复IP信息
4判断用户输入的IP是否正确,如果不正确,让其循环输入,直到正确输入为止
#!/bin/bash
#2020年2月24日20:36:07
#auto change server ip
########################
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.111192.168.1.200help}\033[0m"
exit
fi
、、
checkip()
{
if echo $1 egrep -q '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' ; then
a=`echo $1 awk -F. '{print $1}'`
b=`echo $1 awk -F. '{print $2}'`
c=`echo $1 awk -F. '{print $3}'`
d=`echo $1 awk -F. '{print $4}'`
fi
for n in $a $b $c $d; do
if [ $n -ge 255 ] [ $n -le 0 ]; then
echo "the number of the IP should less than 255 and greate than 0"
fi
done
}
rs=1 while [ $rs -gt 0 ]; do
read -p "Please input the ip:" ip
checkip $ip
rs=`echo $?`
done
echo "The IP is right!"
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

注册即送1000元现金券