Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >判断多个域名中最快域名并返回

判断多个域名中最快域名并返回

作者头像
铭心
发布于 2024-12-20 05:53:45
发布于 2024-12-20 05:53:45
48000
代码可运行
举报
文章被收录于专栏:铭心の博客铭心の博客
运行总次数:0
代码可运行

在写shell脚本的时候,可能会需要下载一些文件,这个文件有多个源提供使用。因此,选择最快的源可以大大减少时间,并增加使用体验。于是乎在闲着的时候想出来了这么一个脚本。萌新一个,如果大佬有什么好的建议欢迎留言。 此脚本的用途:配置好源域名,脚本会ping每个域名4次并取平均值,然后返回最快的域名。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash

# Server域名或IP地址
# 例:server[0]="www.baidu.com" server[1]="www.mxin.moe"
servers=(
    "www.baidu.com"
    "www.mxin.moe"
    "www.qq.com"
    "www.sina.com"
)

# 检查操作系统并安装bc
source /etc/os-release
case $ID in
    debian|ubuntu)
        sudo apt -y install bc > /dev/null 2>&1
        ;;
    centos)
        sudo yum -y install bc > /dev/null 2>&1
        ;;
    *)
        echo '此脚本不支持此操作系统'
        exit 1
        ;;
esac

# 用于存储每个服务器的平均延迟
declare -A ping_results

# 测试每个服务器的延迟
for server in "${servers[@]}"; do
    total_time=0
    for i in {1..4}; do
        # 获取ping的时间,添加错误处理
        ping_time=$(ping -c 1 -W 2 "$server" | awk -F'/' 'END{print $5}')
        if [[ -n "$ping_time" ]]; then
            total_time=$(echo "$total_time + $ping_time" | bc)
        fi
    done
    avg_time=$(echo "scale=2; $total_time / 4" | bc)
    ping_results["$server"]=$avg_time
done

# 找到平均延迟最小的服务器
fastest_server=$(printf "%s\n" "${!ping_results[@]}" | xargs -I {} bash -c 'echo "{} ${ping_results[{}]}"' | sort -n -k2 | head -n1 | awk '{print $1}')
echo $fastest_server # 此变量为返回的最快域名
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
tcping在linux用法,tcping的安装和使用[通俗易懂]
Tcping 网上比较少资料是关于linux对tcp端口ping测试的方法,我这里简单介绍2种方法: 1.yum安装,编译安装方法 1-1.wget http://linuxco.de/tcping/tcping-1.3.5.tar.gz ###下载tcping
全栈程序员站长
2022/09/09
12.6K0
tcping在linux用法,tcping的安装和使用[通俗易懂]
10 个实战与面试【常用 Shell 脚本】编写
5)有两个命令能帮助我调试脚本:set -e 遇到执行非0时退出脚本,set-x 打印执行过程。
昱良
2019/06/19
4850
2018-11-22 10 个实战及面试常用 Shell 脚本编写
注意事项 1)开头加解释器:#!/bin/bash 2)语法缩进,使用四个空格;多加注释说明。 3)命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。 4)默认变量是全局的,在函数中变量local指定为局部变量,避免污染其他作用域。 5)有两个命令能帮助我调试脚本:set -e 遇到执行非0时退出脚本,set-x 打印执行过程。 6)写脚本一定先测试再到生产上。
Albert陈凯
2018/12/14
4350
文件夹内脚本生成列表
由于个人需要,于是写了一个把文件夹下的所有脚本生成一个列表的脚本,目的是可以把所有的脚本整合为一个列表供其他人查看并选择有需要的脚本进行下载运行。详细的使用方法可以参看下面的说明。
铭心
2024/12/20
1420
文件夹内脚本生成列表
Shell百宝箱(后续会不断更新)
获取随机字符串或数字 随机获取8位字符串 # 方法一 echo $RANDOM |md5sum |cut -c 1-8 d2614e90 # 方法二 openssl rand -base64 4 6kLKvQ== # 方法3 cat /proc/sys/kernel/random/uuid |cut -c 1-8 获取随机8位数字 # 方法1: echo $RANDOM |cksum |cut -c 1-8 62936468 # 方法2: openssl rand -base64 4 |cksum
iginkgo18
2020/09/27
6180
【C++】基础:获取ping的时延数据示例
PING是一种常用的网络工具,用于测试计算机之间的连接状况和测量网络时延。它发送一个小的数据包到目标计算机,并等待接收响应。通过测量从发送到接收的时间差,可以得出网络延迟或往返时间(Round-Trip Time, RTT),即从发送请求到获取响应的时间。
DevFrank
2024/07/24
3750
dwm美化
在之前的博客中,我们将arch linux这个系统进行了一些美化,当然也是仅仅做到能看这个地步,要说跟网上其他那些惊艳的特效对比,肯定是不如的。但是我一直秉持一个观点,美化应该适可而止,只要不是丑的你不想打开,不想用,就已经足够了。所以我们不再对系统本身做其他美化,下面开始进行dwm本身的美化
Masimaro
2022/05/10
2.2K0
dwm美化
LINUX脚本使用实战,持续更新
结果测试 [root@zabbix shell]# sh checkurl.sh www.baidu.com www.baidu.com url [ 确定 ]
cuijianzhe
2022/06/14
2.1K0
LINUX脚本使用实战,持续更新
Linux系统之mtr命令的基本使用
在大多数Linux发行版中,mtr可能已经预装。如果没有,你可以使用包管理器安装它,例如:
江湖有缘
2024/06/20
3430
Linux系统之mtr命令的基本使用
Linux代理配置
系统代理只能设置HTTP代理,但是使用privoxy将socks5转换为http代理
码客说
2022/09/23
3.9K0
Nmap 常用基础命令详解
Nmap 是免费开放源代码实用程序,用于网络发现和安全审核。许多系统和网络管理员还发现它对于诸如网络清单,管理服务升级计划以及监视主机或服务正常运行时间之类的任务很有用。Nmap以新颖的方式使用原始IP数据包来确定网络上可用的主机,这些主机提供的服务,它们正在运行的操作系统,包过滤器/防火墙的类型。正在使用中,还有许多其他特性。它旨在快速扫描大型网络,但可以在单个主机上正常运行。
王 瑞
2022/12/28
1.9K0
构建企业级监控平台系列(十一):Zabbix 配置监控 Nginx、MySQL 等常见应用
注意:Nginx中的stub_status模块主要用于查看Nginx的一些状态信息。本模块默认是不会编译进Nginx的,如果你要使用该模块,则要在编译安装Nginx时指定:./configure –with-http_stub_status_module。更多关于企业级监控平台系列的学习文章,请参阅:构建企业级监控平台,本系列持续更新中。
民工哥
2023/10/23
1.1K0
构建企业级监控平台系列(十一):Zabbix 配置监控 Nginx、MySQL 等常见应用
收集系统性能数据并通过gnuplot绘图
使用步骤: 1.设置一个定时任何 执行getperf.sh,采集性能数据 2.将采集到性能数据文件,如:192.168.1.1.tar.gz 解压 3.将性能分析的脚步performance_analyse.sh 放到解压后的目录中 4.安装gnuplot程序 5.将字体文件夹,拷贝到/usr/share/fonts/目录 6.直接运行 bash performance_analyse.sh
力哥聊运维与云计算
2019/06/28
1.7K0
ab(Apache Bench)命令详解以及压力测试模拟(转)
ApacheBench 是 Apache服务器自带的一个web压力测试工具,简称ab。ab又是一个命令行工具,对发起负载的本机要求很低,根据ab命令可以创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问,因此可以用来测试目标服务器的负载压力。总的来说ab工具小巧简单,上手学习较快,可以提供需要的基本性能指标,但是没有图形化结果,不能监控。
wuweixiang
2019/03/12
2.5K0
记一次open-falcon手动push数据 原
http://book.open-falcon.org/zh/usage/data-push.html http://book.open-falcon.org/zh/philosophy/tags-and-hostgroup.html https://github.com/GuyCheung/falcon-ngx_metric
阿dai学长
2019/04/03
1.1K0
linux定位问题常用命令
如果要显示所有的网络接口,包含在线(up)的或下线(down)的,使用-a 选项。
聂伟星
2020/08/28
2.7K0
Linux操作系统DNS解析(nameserver)监控脚本
一、起因 昨天,开发组兄弟发现 resin 日志出现不少支付宝业务报错信息,用户用支付宝购买了产品,钱到账后公司系统却未返回支付成功状态! 这还得了?用户明明支付成功了,结果却显示未到账!!!必须赶紧解决,用户投诉是小,用户流失就大了!仔细分析日志后,发现是解析支付宝接口域名(mapi.alipay.com)时出现延时,导致获取不到支付成功的返回信息! 检查发现 OpenSUSE 的 nameserver 居然是谷歌的公用 DNS:8.8.8.8!!!尼玛,不出问题才怪呢! 二、解决 虽然阿里新推出了公用
张戈
2018/03/23
5.4K0
Linux服务器故障排查基本方案
4.域名--->CDN--->负载均衡--->云服务器ECS+数据库RDS(主从)+缓存Redis
星哥玩云
2022/05/27
8480
Linux服务器故障排查基本方案
linux中21个中级命令
ifconfig命令用于配置网络接口信息。如配置网络接口的ip地址,默认网关地址等,以便机器能够联通互联网。
猫头虎
2024/04/07
1710
DNS服务器搭建(Linux版本)
参考视频:P2.Linux服务器项目实训-DNS服务器配置(bind的正向解释和反向解释)
宝耶需努力
2022/12/13
4.1K0
DNS服务器搭建(Linux版本)
相关推荐
tcping在linux用法,tcping的安装和使用[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档