#!/bin/bash

#auto change IP address

#by author jfedu.net 2015

if [ -z $1 ];then

        echo -e "\033[32m--------------------------\033[1m"

        echo "Usage:{Exec $0 192.168.1.11}"

        echo -e "\033[32m\033[0m"

        exit 0

fi


echo -e "\033[32m--------------------------\033[1m"

NUM_IP=`echo $1|awk -F. '{print $1,$2,$3,$4}'|sed 's/ /\n/g'|grep -v "^$"|wc -l`

while [ $NUM_IP -ne 4 ]

do

        read -p "Please Retry Avaliable IP Address:" IPADDR

        echo $IPADDR|grep -E --color "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"

        if [ $? -eq 0 ];then

                IP_1=`echo $IPADDR|awk -F. '{print $1}'`

                IP_2=`echo $IPADDR|awk -F. '{print $2}'`

                IP_3=`echo $IPADDR|awk -F. '{print $3}'`

                IP_4=`echo $IPADDR|awk -F. '{print $4}'`

                NUM="255"

                if [ $IP_1 -le $NUM -a $IP_2 -le $NUM -a $IP_3 -le $NUM -a $IP_4 -le $NUM ];then

                        NUM_IP=`echo $IPADDR|awk -F. '{print $1,$2,$3,$4}'|sed 's/ /\n/g'|grep -v "^$"|wc -l`

                fi

        fi


done


NETWORK_CONF="/etc/sysconfig/network-scripts/ifcfg-eth0"

DNS_CONF="/etc/resolv.conf"

HOSTNAME_CONF="/etc/sysconfig/network"

BACKUP_DIR="/data/backup/`date +%Y%m%d`"

DATE=`date +%H%M`

IPADDR="$1"

HOSTNAME=`echo $IPADDR|awk -F. '{print "BeiJing-IDC-WEB-"$(NF-1)"-"$NF".jfedu.net"}'`

NETMASK="255.255.255.0"

GATEWAY=`echo $IPADDR|awk -F. '{print $1"."$2"."$3".""1"}'`

DNS="8.8.8.8"


if [ ! -d $BACKUP_DIR ];then

        mkdir -p $BACKUP_DIR

fi

##backup and change server ip address 2015

yes|cp $NETWORK_CONF $BACKUP_DIR/

yes|cp $DNS_CONF $BACKUP_DIR/

grep "static" $NETWORK_CONF >>/dev/null

if [ $? -eq 0 ];then

        sed -i "s/^IPADDR.*/IPADDR=$IPADDR/g" $NETWORK_CONF

        sed -i "s/^NETMASK.*/NETMAKS=$NETMASK/g" $NETWORK_CONF

        sed -i "s/^GATEWAY.*/GATEWAY=$GATEWAY/g" $NETWORK_CONF

        sed -i "s/^ONBOOT.*/ONBOOT=yes/g" $NETWORK_CONF

        echo "nameserver $DNS" >$DNS_CONF

        hostname $HOSTNAME

        sed -i "s/^HOSTNAME.*/HOSTNAME=$HOSTNAME/g" $HOSTNAME_CONF

        echo "$IPADDR $HOSTNAME" >>/etc/hosts

else

        sed -i "s/^BOOTPROTO.*/BOOTPROTO=static/g" $NETWORK_CONF

cat >>$NETWORK_CONF<<EOF

IPADDR=$IPADDR

NETMASK=$NETMASK

GATEWAY=$GATEWAY

EOF

        sed -i "s/^ONBOOT.*/ONBOOT=yes/g" $NETWORK_CONF

        hostname $HOSTNAME

        sed -i "s/^HOSTNAME.*/HOSTNAME=$HOSTNAME/g" $HOSTNAME_CONF

        echo "$IPADDR $HOSTNAME" >>/etc/hosts

        echo "nameserver $DNS" >$DNS_CONF

fi

echo -e "\033[32mNetWork Config Change successfully,Follow:\033[0m"

echo -e "\033[32m------------------------\033[0m"

cat $NETWORK_CONF

/etc/init.d/network restart >>/dev/null 2>&1

echo -e "\033[32m------------------------\033[0m"

                                                                                               74,19         Bot