实现服务器IP、主机名自动修改及配置脚本

root
233
文章
0
评论
2020年2月5日18:39:45 评论 2086字阅读6分57秒

实现服务器IP、主机名自动修改及配置脚本

 

企业中服务器IP地址系统通过自动化工具安装完系统,IP均是自动获取的,而服务器要求固定的静态IP,百台服务器手工去配置静态IP是不可取的,可以基于Shell脚本自动修改IP、主机名等信息。
Shell脚本实现服务器IP、主机名自动修改及配置,编写思路如下:
  • 静态IP修改
  • 动态IP修改
  • 根据IP-生成主机名并配置
  • 修改DNS域名解析
Shell脚本实现服务器IP、主机名自动修改及配置,代码如下:
#!/bin/bash
ETHCONF=/etc/sysconfig/network-scripts/ifcfg-eth0

HOSTS=/etc/hosts

NETWORK=/etc/sysconfig/network

DIR=/data/backup/`date +%F`

NETMASK=255.255.255.0
echo "----------------------------"

judge_ip(){

read -p "Please enter ip Address,example 192.168.0.11 ip": IPADDR

echo $IPADDR|grep -v "[Aa-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()
{
judge_ip
while [ $? -ne 0 ]
do
judge_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
judge_ip
while [ $? -ne 0 ]
do
judge_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\nNETMASK=$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. !"
else
echo "Static IP already exists,please exit."
exit $?
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"-hebbao"}'`
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
;;

*)
echo -e "1) modify_ip\n2) modify_ip\n3)exit"
esac
done

 

 

继续阅读
weinxin
我的微信
这是我的微信扫一扫
  • 文本由 发表于 2020年2月5日18:39:45
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
网站数据会滚脚本 shell

网站数据会滚脚本

网站数据会滚脚本 当代码经过测试环境后,正式进入生产环境,突然发现有问题,这时候需要立刻还原数据,写一个简单的网站代码回滚脚本 java项目的 #!/bin/bash Web_Dir=/server/...
三剑客练习 shell

三剑客练习

三剑客练习 grep I am hewenfu teacher! I teach linux. test I like badminton ball ,billiard ball and chines...
awk练习 shell

awk练习

awk 1.列出UID=0的用户 # awk -F : '$3==0' /etc/passwd root:x:0:0:root:/root:/bin/bash 2.列出系统的用户 # awk -F :...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: