国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Linux Shell > 正文

Shell腳本實現檢測Cygwin最快的鏡像站點

2020-07-27 19:07:26
字體:
來源:轉載
供稿:網友

這是一個 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[31mfail/e[0m"
    else
        echo -e "/e[32m$time/e[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:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新民市| 德阳市| 改则县| 溧水县| 湖北省| 大理市| 九龙坡区| 潼南县| 厦门市| 永平县| 大邑县| 贵州省| 广南县| 宁强县| 阳高县| 黔南| 马边| 吉首市| 高州市| 太仆寺旗| 多伦县| 岢岚县| 裕民县| 萍乡市| 墨江| 青冈县| 三台县| 社会| 洮南市| 赤峰市| 保靖县| 耒阳市| 宁夏| 通化市| 涟源市| 醴陵市| 襄樊市| 鄂托克前旗| 普安县| 高唐县| 合肥市|