Shell 스 크 립 트 는 Cygwin 의 가장 빠 른 미 러 사이트 검색 을 실현 합 니 다.
원 리 는 간단 합 니 다.먼저 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:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Shell alias 명령에 별칭을 설정하는 방법명령에 별명을 설정하면 명령의'작은 이름'으로 삼을 수 있지만, 이렇게 하는 것이 무슨 의미가 있습니까? 이때 별명이 작용할 수 있다.vim 명령의 별명을vi라고 정의하면 이후에 실행된vi 명령은 실제로vim 명령을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.