Shell脚本之批量修改linux主机DNS

一、需求说明

  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 !在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恒悦sunsite

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值