主頁 > 知識庫 > Shell腳本實現(xiàn)檢測Cygwin最快的鏡像站點

Shell腳本實現(xiàn)檢測Cygwin最快的鏡像站點

熱門標簽:寧波智能外呼系統(tǒng)公司 安裝外呼系統(tǒng)費用 地圖標注輻射圖案 曲阜400電話辦理 申請公司400電話要注意什么 衛(wèi)星地圖標注地名 聯(lián)通電話機器人怎么接 奧維互動地圖標注參數(shù) 電銷機器人 劍魚

這是一個 shell 腳本,所以首先你需要安裝一個基本的 Cygwin 環(huán)境,當然還有 curl。

原理很簡單,先從 cygwin.com 下載最新的 mirrors.lst 鏡像列表,簡單處理一下后,利用 curl 以此檢測每個站點的連接速度,并將結(jié)果記錄下來,最后再排個序,顯示出最快的幾個站點。

在使用的過程中,我發(fā)現(xiàn)檢測到的最快的 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
}
 
## 檢查參數(shù)并賦值
_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
}
 
## 處理參數(shù)
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檢測結(jié)果:"
echo -e $results | sort -n | sed '1d' | head -$mirrors_count
 
# vim: set expandtab tabstop=4 shiftwidth=4:

您可能感興趣的文章:
  • 自動化下載并檢測ftp文件備份的shell腳本
  • 用來檢測輸入的選項$1是否在PATH中的shell腳本
  • shell腳本實現(xiàn)實時檢測文件變更
  • VBS腳本寫的Windows硬件檢測工具分享
  • Linux Shell腳本實現(xiàn)檢測tomcat
  • Shell腳本實現(xiàn)檢測進程是否正在運行
  • PowerShell腳本實現(xiàn)檢測網(wǎng)絡內(nèi)主機類型
  • 腳本批量檢測網(wǎng)站是否存活

標簽:大興安嶺 安康 仙桃 江西 遵義 大慶 三門峽 上饒

巨人網(wǎng)絡通訊聲明:本文標題《Shell腳本實現(xiàn)檢測Cygwin最快的鏡像站點》,本文關鍵詞  Shell,腳本,實現(xiàn),檢測,Cygwin,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關。
  • 相關文章
  • 下面列出與本文章《Shell腳本實現(xiàn)檢測Cygwin最快的鏡像站點》相關的同類信息!
  • 本頁收集關于Shell腳本實現(xiàn)檢測Cygwin最快的鏡像站點的相關信息資訊供網(wǎng)民參考!
  • 推薦文章