LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1096|回复: 8

比较各源速度的shell脚本(Arch专用)

[复制链接]
发表于 2009-8-19 01:08:47 | 显示全部楼层 |阅读模式
    最近换了宽带接入方式,感觉以前用的源速度没那么快了,想起官方源里有一个源速度比较的python脚本,但是发现如果要使用要安装大约30M的东西,所以自己写了一个比较源速度的shell脚本,比较简陋,但还能使用。  


    加 -h 参数能看到帮助


    2009.8.15日更新:修正了几个bug。考虑在下一个版本里面添加一个-d选项,用来测试文件下载速度。这样结果更有精确。
提示: 该脚本默认已经设置好了pacman的源文件路径,可以不带任何参数直接运行就可以比较。也可以指定文件,具体看 -h参数。

    2009.8.19日更新:吸取本帖三楼xzap的建议,增加了即时显示结果的功能,并对结果做了细微修改,修改为结果显示网站全路径,方便复制和使用。解压用 tar xvf pacmanCompare........

 

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2009-8-19 01:25:19 | 显示全部楼层
  1. tar -zxvf pacmanCompare.0.2.tar.gz
  2. gzip: stdin: not in gzip format
  3. tar: Child returned status 1
  4. tar: Exiting with failure status due to previous errors
复制代码
回复 支持 反对

使用道具 举报

发表于 2009-8-19 09:28:18 | 显示全部楼层
支持,不过就是反馈不是很好,无法直接复制粘贴使用,稍微修改了下

  1. #!/bin/bash
  2. #===============================================================================
  3. #
  4. #          FILE:  pacmanCompare
  5. #
  6. #         USAGE:  ./pacmanCompare
  7. #
  8. #   DESCRIPTION:  
  9. #
  10. #       OPTIONS:  -f -W -n -h
  11. #  REQUIREMENTS:  ---
  12. #          BUGS:  ---
  13. #         NOTES:  ---
  14. #        AUTHOR:  Myth
  15. #       COMPANY:  
  16. #       VERSION:  0.2
  17. #       CREATED:  08/8/2009 01:59:51 AM CST
  18. #      REVISION:  ---
  19. #===============================================================================


  20. Usage(){
  21. cat <<END
  22. Usage : pacmanCompare [-f file] [-W timeout] [-n Number] [-h]
  23.    -n : specify the number of mirror to display
  24.    -f : specify the pacman mirror file
  25.    -W : set timeout
  26.    -h : help
  27. END
  28. }

  29. timeout=5
  30. displayNumber=10
  31. mirrorFile="/etc/pacman.d/mirrorlist"

  32. while getopts hf:W:n: option
  33. do
  34.     case $option in
  35.         h)
  36.         Usage
  37.         exit 0
  38.         ;;
  39.         n)
  40.         displayNumber=$OPTARG
  41.         ;;
  42.         W)
  43.         timeout=$OPTARG
  44.         ;;
  45.         f)
  46.         mirrorFile=$OPTARG
  47.         ;;
  48.         \?)
  49.         Usage
  50.         exit 1
  51.         ;;
  52.     esac
  53. done



  54. if [ ! -e "$mirrorFile" -o -d "$mirrorFile" ]
  55. then
  56.     echo -e "Error while access pacman mirror file (Default is /etc/pacman.d/mirrorlist)\nExit !"
  57.     exit 2
  58. fi


  59. cat $mirrorFile |sed '/^$/d' |grep 'Server =' >/tmp/mirrorTemp$$
  60. j=1
  61. all=`cat /tmp/mirrorTemp$$|wc -l`
  62. echo "Testing .  Please wait  ."

  63. cat /tmp/mirrorTemp$$|
  64. while read line
  65. do
  66. echo -n $j/$all $line "-->"
  67. line2=`echo $line| sed 's/.*Server\ =\ ftp:\/\/\([^\/]*\)\/.*/\1/' |sed 's/.*Server\ =\ http:\/\/\([^\/]*\)\/.*/\1/'`
  68.     result=$(ping -c 1 -W $timeout "$line2" 2>/dev/null |grep 'bytes from'|cut -d' ' -f8 |cut -d'=' -f 2)
  69.     echo -n ${result:-Can\'t connect\!}' ===>> '>>/tmp/speedTemp$$
  70.     echo "$line" >>/tmp/speedTemp$$
  71.     echo ${result:-Miss\!\!}
  72. ((j++))
  73. done

  74. echo


  75. rm /tmp/mirrorTemp$$
  76. grep -v "Can't connect" /tmp/speedTemp$$ |head -$displayNumber |sort -n
  77. grep -v "Can't connect" /tmp/speedTemp$$ |head -$displayNumber |sort -n |awk '{print $3" "$4" "$5}'

  78. rm /tmp/speedTemp$$
复制代码
回复 支持 反对

使用道具 举报

发表于 2009-8-19 10:26:24 | 显示全部楼层
由 Xyne 所维护的 reflector 很小,相当好用。可以生成 Arch Mirrorcheck 站点上 t 小时内更新的前 n 个镜像地址文件,并按照到本机的连接速度排序。为什么不试试呢?

参见: http://xyne.archlinux.ca/info/reflector
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-8-19 10:39:52 | 显示全部楼层
回复3楼:   多谢帮忙,这样确实交互性更好,我又修改了一下,并做了更新。
回复4楼:  也可以考虑在以后的版本中增加自动生成Arch Mirrorcheck 站点的功能。
回复 支持 反对

使用道具 举报

发表于 2009-8-20 03:56:24 | 显示全部楼层
这个好东西,我都试试嘿嘿
回复 支持 反对

使用道具 举报

发表于 2009-8-22 20:40:10 | 显示全部楼层
我试了一下reflector,但是他给出的server好像在我这速度不快。
前2天网络问题搞的升级系统很满,自己也用python作了一个测试server速度的小脚本,呵呵。还是用自己的吧。


Post by cwjiof;2017863
由 Xyne 所维护的 reflector 很小,相当好用。可以生成 Arch Mirrorcheck 站点上 t 小时内更新的前 n 个镜像地址文件,并按照到本机的连接速度排序。为什么不试试呢?

参见: http://xyne.archlinux.ca/info/reflector
回复 支持 反对

使用道具 举报

发表于 2009-8-22 20:51:15 | 显示全部楼层
Post by crazyrain;2019183
我试了一下reflector,但是他给出的server好像在我这速度不快。……
难道你用的指令中,只有一个孤零零的“reflector”,什么参数都不带?
难道你只用其中的一个Server下载,而不是至少五个同时下?
回复 支持 反对

使用道具 举报

发表于 2009-8-23 17:09:24 | 显示全部楼层
怀疑163的源一直没有更新太旧了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表