一、需求说明
Linux主机运维中我们经常需要批量修改一些配置信息,比如DNS地址。当原来配置的DNS出现故障时,为了快速回复互联网访问,我们需要更换正常的DNS地址,Linux主机数量多的情况下,我们就需要此脚本进行批量。通过此脚本可以帮助我们快速批量修改列表清单中的主机的DNS。
二、脚本内容
#!/bin/bash
#script name: changedns.sh
#author: 524627027@qq.com
#version: v1
#description: 此脚本用于一键更新linux(centos6、centos7)服务器的dns服务器配置
#参数定义
workdir=$(cd $(dirname $0); pwd)
logfile=$workdir/logs/info.log
hosts=$workdir/hostslist.txt
dnsconf=$workdir/resolv.conf
olddns=`cat $dnsconf |grep nameserver | awk -F " " '{print $2}'`
#检查主键列表函数
function checklist(){
if [ -s $hosts ]; then
echo -e "主机列表存在,主机列表清单如下:\e[1;32m \n`cat $hosts` \e[0m"
else
cat >$hosts <<EOF
192.168.0.124
192.168.0.125
EOF
fi
}
function changedns(){
read -p "请输入新的DNS地址:" newdns
#验证输入IP地址是否为合法IP地址
ipcalc -cs $newdns
if [ $? -eq 0 ] ;then
sed -i s/$olddns/$newdns/g $dnsconf
while read line
do
scp $dnsconf $line:/etc/resolv.conf
done < "$hosts"
else
echo "请输入合法的DNS地址!!!"
exit
fi
}
"changedns.sh" 73L, 1331C 已写入
(base) [root@s186 changeDNS]# cat changedns.sh
#!/bin/bash
#script name: changedns.sh
#author: 524627027@qq.com
#version: v1
#description: 此脚本用于一键更新linux(centos6、centos7)服务器的dns服务器配置
#参数定义
workdir=$(cd $(dirname $0); pwd)
logfile=$workdir/logs/info.log
hosts=$workdir/hostslist.txt
dnsconf=$workdir/resolv.conf
olddns=`cat $dnsconf |grep nameserver | awk -F " " '{print $2}'`
#检查主键列表函数
function checklist(){
if [ -s $hosts ]; then
echo -e "主机列表存在,主机列表清单如下:\e[1;32m \n`cat $hosts` \e[0m"
else
cat >$hosts <<EOF
192.168.0.124
192.168.0.125
EOF
fi
}
function changedns(){
read -p "请输入新的DNS地址:" newdns
#验证输入IP地址是否为合法IP地址
ipcalc -cs $newdns
if [ $? -eq 0 ] ;then
sed -i s/$olddns/$newdns/g $dnsconf
while read line
do
scp $dnsconf $line:/etc/resolv.conf
done < "$hosts"
echo -e "列表中的主机DNS地址已经由\e[1;32m $olddns \e[0m 修改为 \e[1;32m $newdns \e[0m !"
else
echo -e "\e[1;31m 请输入合法的DNS地址!!! \e[0m "
exit
fi
}
function main(){
checklist
changedns
}
main
三、使用示例
1、输入错误DNS时提示请输入合法的IP地址
(base) [root@s186 changeDNS]# sh changedns.sh
主机列表存在,主机列表清单如下:
192.168.0.124
192.168.0.125
请输入新的DNS地址:192.168.1
请输入合法的DNS地址!!!
2、输入正确的DNS时根据列表更新DNS地址
(base) [root@s186 changeDNS]# sh changedns.sh
主机列表存在,主机列表清单如下:
192.168.0.124
192.168.0.125
请输入新的DNS地址:211.142.211.124
resolv.conf 100% 80 47.0KB/s 00:00
resolv.conf 100% 80 37.5KB/s 00:00
列表中的主机DNS地址已经由 192.168.0.1 修改为 211.142.211.124 !