Shell 스 크 립 트 는 Cygwin 의 가장 빠 른 미 러 사이트 검색 을 실현 합 니 다.

이것 은 셸 스 크 립 트 이기 때문에 먼저 기본 적 인 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}
"
    fi
done
 
echo -e "
:"
echo -e $results | sort -n | sed '1d' | head -$mirrors_count
 
# vim: set expandtab tabstop=4 shiftwidth=4:

좋은 웹페이지 즐겨찾기