• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > Shell脚本实现检测Cygwin最快的镜像站点

Shell脚本实现检测Cygwin最快的镜像站点

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了shell脚本,shell脚本编程,shell脚本学习指南,shell脚本实例,linux shell脚本等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

这是一个 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:
</div>

</div>

您可能想查找下面的文章:

  • Shell脚本监控目录内文件改动
  • 实现自动清除日期目录shell脚本实例代码
  • 使用Linux shell脚本实现FTP定时执行批量下载指定文件
  • shell脚本连接并重启远程服务器的方法
  • shell 脚本安装PHP扩展的简单方法
  • Linux shell脚本输出日志笔记整理(必看篇)
  • shell脚本实现分日志级别输出的方法
  • shell将脚本输出结果记录到日志文件的实现
  • 输出执行操作和打印日志的shell脚本实例
  • shell脚本 自动创建用户详解及实例代码

相关文章

  • Shell编程中的特殊变量之进程状态变量介绍
  • shell实现数字打印从100到200的数
  • linux Shell脚本里面把一个数组传递到awk内部进行处理
  • getcwd cannot access parent directories错误解决方法
  • ssh自动登录的4种实现方法
  • linux网络相关命令汇总(6)
  • Ubuntu用户之间相互切换方法(推荐)
  • Linux 下sudo网络权限详解
  • 实现自动清除日期目录shell脚本实例代码
  • 用来记录登录后使用命令的shell脚本

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • shell中的各种括号的使用方法
    • 脚本实现SSH登录邮件报警
    • Shell脚本批量清除Nginx缓存
    • Shell脚本实现检测某ip网络畅通情况(含短信报警功能)
    • 查找目录下同名但不同后缀名文件的shell脚本代码
    • linux获取系统启动时间示例详解
    • 自动生成linux网卡配置脚本分享
    • shell脚本实现监控shell脚本的执行流程及变量的值
    • Shell脚本中调用、引用、包含另外一个脚本文件的两种方法
    • shell中冒号的特殊用法分享

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有