文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Shell脚本实现检测Cygwin最快的镜像站点

2022-06-04 21:47

关注

这是一个 shell 脚本,所以首先你需要安装一个基本的 Cygwin 环境,当然还有 curl。

原理很简单,先从 cygwin.com 下载最新的 mirrors.lst 镜像列表,简单处理一下后,利用 curl 以此检测每个站点的连接速度,并将结果记录下来,最后再排个序,显示出最快的几个站点。

在使用的过程中,我发现检测到的最快的 mirror,实际上使用速度并不一定是最快的,这可能和服务器有关系,毕竟 curl 检测的时间只是读取 mirror 首页的时间。不过每个 mirror 一般都有两组服务器——http & ftp,如果其中一个速度不怎么样,那么可以选择另外一个试试看。

#!/bin/sh

 

# cygwin-mirrors.sh

# 该脚本用于查找 Cygwin 的最快镜像

 

timeout=5           # 超时时间

mirrors_count=5     # 显示最快的几个镜像

PROG=`basename $0`  # 程序名称

 

## 显示 usage

_usage() {

    echo "Usage: ${PROG} [-t <timeout>] [-p <mirrors_count>] [-h]"

    exit

}

 

## 检查参数并赋值

_assign() {

    if [ "$1" == "timeout" -o "$1" == "mirrors_count" ]; then

        if [[ "$2" =~ ^[[:digit:]]+$ ]]; then

            let $1=$2

        else

            echo "$1 should be a number"

            exit 1

        fi

    fi

}

 

## 处理参数

while getopts ":t:p:h-:" optval

do

    case "$optval" in

        t)   _assign timeout ${OPTARG} ;;

        p)   _assign mirrors_count ${OPTARG} ;;

        h)   _usage ;;

        "-") echo "Unknown option: '--${OPTARG}'" >&2;            _usage ;;

        ":") echo "Option '-${OPTARG}' requires an argument" >&2; _usage ;;

        "?") echo "Unknown option: '-${OPTARG}'" >&2;             _usage ;;

        ## Should not occur

        *)   echo "Unknown error while processing options" >&2;   _usage ;;

    esac

done

shift $(expr ${OPTIND} - 1)

 

## 检查用户是否安装了 curl

CURL=`which curl 2> /dev/null`

[ -z "$CURL" ] && (echo "Need to install the curl package."; exit 1)

 

## 读取镜像站点

mirrors=`curl --silent http://cygwin.com/mirrors.lst | cut -d';' -f1`

 

## 使用 CURL 依次检测时间

results=''

for mirror in $mirrors; do

    echo -n "Checking ${mirror} ... "

    time=`curl -m $timeout -s -o /dev/null -w %{time_total} $mirror`

    if [ "$time" = "0.000" ]; then

        echo -e "e[31mfaile[0m"

    else

        echo -e "e[32m$timee[0m"

        results="${results}e[32m${time}e[0m - ${mirror}n"

    fi

done

 

echo -e "n检测结果:"

echo -e $results | sort -n | sed '1d' | head -$mirrors_count

 

# vim: set expandtab tabstop=4 shiftwidth=4:

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯