欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2015年04月03日 10:24:35   投稿:junjie  
這篇文章主要介紹了Shell腳本實現(xiàn)檢測Cygwin最快的鏡像站點,本文的原理和腳本也可適用其它軟件比如apache、nginx等開源軟件,需要的朋友可以參考下

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

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

在使用的過程中,我發(fā)現(xiàn)檢測到的最快的 mirror,實際上使用速度并不一定是最快的,這可能和服務(wù)器有關(guān)系,畢竟 curl 檢測的時間只是讀取 mirror 首頁的時間。不過每個 mirror 一般都有兩組服務(wù)器——http & ftp,如果其中一個速度不怎么樣,那么可以選擇另外一個試試看。

復(fù)制代碼 代碼如下:

#!/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:

相關(guān)文章

  • Shell腳本解壓rpm軟件包

    Shell腳本解壓rpm軟件包

    這篇文章主要介紹了Shell腳本解壓rpm軟件包,用來解壓后提取某個包中文件,需要的朋友可以參考下
    2014-06-06
  • 統(tǒng)計網(wǎng)卡流量的兩段shell腳本(使用ifconfig)

    統(tǒng)計網(wǎng)卡流量的兩段shell腳本(使用ifconfig)

    一個很小巧的shell腳本,使用ifconfig的不間斷輸出來統(tǒng)計網(wǎng)卡的流量,有需要的朋友可以參考下
    2013-02-02
  • 關(guān)于Linux反空閑設(shè)置的兩種方法總結(jié)

    關(guān)于Linux反空閑設(shè)置的兩種方法總結(jié)

    下面小編就為大家?guī)硪黄P(guān)于Linux反空閑設(shè)置的兩種方法總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • shell腳本一鍵同時推送代碼至github和gitee的解決辦法

    shell腳本一鍵同時推送代碼至github和gitee的解決辦法

    這篇文章主要介紹了shell腳本一鍵同時推送代碼至github和gitee的解決辦法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • linux shell之pushd、popd和dirs的使用講解

    linux shell之pushd、popd和dirs的使用講解

    今天小編就為大家分享一篇關(guān)于linux shell之pushd、popd和dirs的使用講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • linux啟動dhcp服務(wù)器步驟

    linux啟動dhcp服務(wù)器步驟

    在本篇文章里小編給大家整理了關(guān)于linux怎么啟動dhcp服務(wù)器的相關(guān)知識點內(nèi)容,需要的朋友們跟著學(xué)習(xí)下。
    2019-05-05
  • Linux shell傳遞參數(shù)實現(xiàn)原理及代碼實例

    Linux shell傳遞參數(shù)實現(xiàn)原理及代碼實例

    這篇文章主要介紹了Linux shell傳遞參數(shù)實現(xiàn)原理及代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • shell腳本返回值問題的解決

    shell腳本返回值問題的解決

    這篇文章主要介紹了shell腳本返回值問題的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Linux 連續(xù)執(zhí)行多條命令的方法(推薦)

    Linux 連續(xù)執(zhí)行多條命令的方法(推薦)

    下面小編就為大家?guī)硪黄狶inux 連續(xù)執(zhí)行多條命令的方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • shell下獲取上一個月,星期時間和時間戳的范圍實例

    shell下獲取上一個月,星期時間和時間戳的范圍實例

    今天小編就為大家分享一篇shell下獲取上一個月,星期時間和時間戳的范圍實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06

最新評論