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


aihuafeng66t
克里斯蒂亚诺诺 2024-01-11 17:27:27 54001 赞同 0 反对 0
分类: 资源 标签: 运维
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 !在这里插入图片描述

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
克里斯蒂亚诺诺L1
粉丝 0 资源 831 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  130
统信桌面专业版【全盘安装UOS系统】介绍  128
银河麒麟桌面操作系统安装佳能打印机驱动方法  120
银河麒麟桌面操作系统 V10-SP1用户密码修改  108
麒麟系统连接打印机常见问题及解决方法  27
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
麒麟系统连接打印机常见问题及解决方法 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益218元

3

1843880570 收益214.2元

4

IT-feng 收益210.13元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!