iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >Shell脚本实现检测Cygwin最快的镜像站点
  • 893
分享到

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

镜像脚本最快 2022-06-04 21:06:29 893人浏览 独家记忆
摘要

这是一个 shell 脚本,所以首先你需要安装一个基本的 Cygwin 环境,当然还有 curl。 原理很简单,先从 cygwin.com 下载最新的 mirrors.lst 镜像列表,简单处理一下后,利用

这是一个 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:

--结束END--

本文标题: Shell脚本实现检测Cygwin最快的镜像站点

本文链接: https://www.lsjlt.com/news/18452.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作