Contents
3.28. 修改IP_主机名_网卡信息脚本¶
#!/usr/bin/env bash
#usage:xxx
#scripts_name:xxx.sh
#静态IP修改
#动态IP修改
#根据IP生产主机名并配置
#修改DNS域名解析
ETHCONF=/etc/sysconfig/network-scripts/ifcfg-ens32
HOSTS=/etc/hosts
NETWORK=/etc/sysconfig/network
DIR=/data/backup/`date +%Y%m%d`
NETMASK=255.255.255.0
echo "------------------------------------------------------------------"
judeg_ip(){
read -p "Please enter ip Address,example 192.168.0.11 ip":IPADDR
echo $IPADDR|grep -v "[Az-Zz]"|grep --color -E "([0-9]{1,3}\.){3}[0-9]{1,3}"
}
count_ip(){
count=(`echo ${IPADDR}|awk -F. '{print $1,$2,$3,$4}'`)
IP1=${count[0]}
IP2=${count[1]}
IP3=${count[2]}
IP4=${count[3]}
}
ip_check(){
judeg_ip
while [ "$?" -ne 0 ]; do
judeg_ip
done
count_ip
while [ "$IP1" -lt 0 -o "$IP1" -ge 255 -o "$IP2" -ge 255 -o "$IP3" -ge 255 -o "$IP4" -ge 255 ]; do
judeg_ip
while [ "$?" -ne 0 ]; do
judeg_ip
done
count_ip
done
}
change_ip(){
if [ ! -d $DIR ]; then
mkdir -p $DIR
fi
echo "The Change ip address to Backup Interface eth0"
cp $ETHCONF $DIR
grep "dhcp" $ETHCONF
if [ "$?" -eq 0 ]; then
read -p "Please enter ip Address:" IPADDR
sed -i 's/dhcp/static/g' $ETHCONF
echo -e "IPADDR=$IPADDR\nNERMASK=$NETMASK\nGATEWAY=`echo $IPADDR|awk -F. '{print $1"."$2"."$3}'`.2" >> $ETHCONF
echo "The IP configuration success. !"
else
echo -n "Static IP has been configured,please confirm whether to modify,yes or No";
read i
fi
if [ "$i" == "y" -o "$i" == "yes" ]; then
ip_check
sed -i -e '/IPADDR/d' -e '/NETMASK/d' -e '/GATEWAY/d' $ETHCONF
echo -e "IPADDR=$IPADDR\nNETMASK=$NETMASK\nGATEWAY=`echo $IPADDR|awk -F. '{print $1"."$2"."$3}'`.2" >> $ETHCONF
echo "The IP configuration success. !"
echo
else
echo "Static IP already exists,please exit."
echo $?
fi
}
change_hosts(){
if [ ! -d $DIR ]; then
mkdir -p $DIR
fi
cp $HOSTS $DIR
ip_check
host=`echo $IPADDR|sed 's/\./-/g'|awk '{print "BJ-IDC-" $0 "-Hujianli.net"}'`
cat $HOSTS|grep "$host"
if [ "$?" -ne 0 ]; then
echo "$IPADDR $host" >> $HOSTS
echo "The hosts modify success"
fi
grep "$host" $NETWORK
if [ "$?" -ne 0 ]; then
sed -i 's/^HOSTNAME/#HOSTNAME/g' $NETWORK
echo "NETWORK=$host" >> $NETWORK
hostname $host;su
fi
}
PS3="Please Select configuration ip or configuration host:"
select i in "modify_ip" "modify_hosts" "exit"
do
case "$i" in
modify_ip)
change_ip
;;
modify_hosts)
change_hosts
;;
exit)
exit
;;
*)
echo -e "1)modify_ip\n2)modify_host\n3)exit"
esac
done