何浩钧 2024-01-10 14:42 采纳率: 0%
浏览 5
已结题

关于#linux#的问题:想要写一个shell脚本自动寻找最近的DNS服务器,然后自动更新我的配置文件里面的DNS(相关搜索:linux系统)

linux系统的开发板,每次自己在网上找DNS再添加到配置文件里面,太麻烦了
想要写一个shell脚本自动寻找最近的DNS服务器,然后自动更新我的配置文件里面的DNS
  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-10 16:27
    关注

    【以下回答由 GPT 生成】

    我可以帮助你编写一个shell脚本来自动寻找最近的DNS服务器并更新配置文件。以下是解决该问题的步骤:

    1. 首先,你需要一个包含一组可能的DNS服务器IP地址的列表。你可以将这些IP地址存储在一个文本文件中,每个地址占一行。例如,创建一个名为"dns_servers.txt"的文件,内容如下: 8.8.8.8 8.8.4.4 1.1.1.1

    2. 接下来,你需要编写一个shell脚本来自动寻找最近的DNS服务器。脚本将比较当前系统到每个DNS服务器的延迟,并选择延迟最低的服务器。以下是一个示例脚本:

    ```shell #!/bin/bash

    DNS_SERVERS_FILE="dns_servers.txt" BEST_DNS_SERVER=""

    while IFS= read -r DNS_SERVER; do PING_RESULT=$(ping -c 1 "$DNS_SERVER" | grep "time=" | awk '{print $8}' | cut -d "=" -f 2)

       if [[ -n "$PING_RESULT" ]]; then
           if [[ -z "$BEST_DNS_SERVER" ]]; then
               BEST_DNS_SERVER="$DNS_SERVER"
           else
               CURRENT_DELAY=$(bc <<< "$PING_RESULT")
               BEST_DELAY=$(bc <<< "$BEST_PING_DELAY")
    
               if (( $(echo "$CURRENT_DELAY < $BEST_DELAY" | bc -l) )); then
                   BEST_DNS_SERVER="$DNS_SERVER"
               fi
           fi
       fi
    

    done < "$DNS_SERVERS_FILE"

    if [[ -n "$BEST_DNS_SERVER" ]]; then echo "Best DNS server found: $BEST_DNS_SERVER"

       # Update the DNS configuration file with the best DNS server
       sed -i "s/^nameserver .*/nameserver $BEST_DNS_SERVER/" /etc/resolv.conf
    
       echo "DNS configuration updated."
    

    else echo "No reachable DNS servers found." fi ```

    此脚本将读取"dns_servers.txt"文件中的每个DNS服务器IP地址,并使用ping命令计算当前系统到每个服务器的延迟。它将选择延迟最低的服务器,并将其IP地址更新到"/etc/resolv.conf"文件中的nameserver行。如果没有可达的DNS服务器,则脚本会输出相应的消息。

    确保将脚本保存为可执行文件,例如"dns_update.sh"。

    1. 运行脚本,执行以下命令: shell ./dns_update.sh 脚本将自动寻找最近的DNS服务器并更新配置文件。

    请注意,此解决方案假设你的系统使用了"/etc/resolv.conf"文件来配置DNS服务器。如果你的系统使用其他文件或工具来管理DNS配置,请相应地修改脚本。此外,此脚本依赖于ping命令和bc工具,请确保它们在你的系统上可用。

    如果你有进一步的问题或需要进一步的帮助,请告诉我。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月21日
  • 创建了问题 1月10日

悬赏问题

  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开