站长视角
用户至上

使用指定 DNS 服务器解析域名并更新 hosts 绑定

为解决一个小众需求写的 Shell 脚本,记录分享下。它可以以指定 DNS 服务器解析设置域名,并将结果更新 hosts 文件绑定。

脚本流程:指定 DNS 服务器解析目标域名,将结果储存到临时文件 -> 判断解析是否成功再继续 -> 当解析成功,将最新解析 IP 替换之前 hosts 里绑定的 IP -> 当解析失败,删除临时文件。

安装依赖组件,这里使用 dig 命令获取域名解析,因此需要安装相应软件包。

# RHEL & CentOS
yum -y install bind-utils

# Debian & Ubuntu
apt-get -y install dnsutils

脚本代码:

#!/usr/bin/env bash

if dig @8.8.8.8 www.example.com +short > /tmp/digout 2>&1
then
    now_ip=$(awk '/www.example.com/ {print $1}' /etc/hosts)
    new_ip=$(cat /tmp/digout | tail -n1)
    sed -i "s/$now_ip/$new_ip/" /etc/hosts
else
    rm -f /tmp/digout
fi

使用方法:

# 新建脚本文件
vi /root/dig_hosts.sh

# 赋予运行权限
chmod +x /root/dig_hosts.sh

# 使用 crontab -e 命令添加定时任务。例如设置每天上午 9 点 30 运行 30 9 * * * /root/dig_hosts.sh > /dev/null 2>&1

注:在使用脚本前,需要先手动在 hosts 里绑定好域名,不然运行脚本将找不到替换目标。

赞(1)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权, 转载请注明出处。
文章名称:《使用指定 DNS 服务器解析域名并更新 hosts 绑定》
文章链接:https://cnidc.co/21340.html
【声明】:国外主机测评仅分享信息,不参与任何交易,也非中介,所有内容仅代表个人观点,均不作直接、间接、法定、约定的保证,读者购买风险自担。一旦您访问国外主机测评,即表示您已经知晓并接受了此声明通告。
【关于安全】:任何 IDC商家都有倒闭和跑路的可能,备份永远是最佳选择,服务器也是机器,不勤备份是对自己极不负责的表现,请保持良好的备份习惯。

登录

找回密码

注册