72 lines
2.3 KiB
Bash
72 lines
2.3 KiB
Bash
|
#!/bin/sh
|
||
|
#自动检测最快软件源脚本
|
||
|
VERSION="5.0"
|
||
|
TEST_NETCONNECT_HOST="www.baidu.com"
|
||
|
SOURCES_MIRRORS_FILE="mirrors.list"
|
||
|
MIRRORS_SPEED_FILE="/tmp/mirrors_speed.list"
|
||
|
function get_ping_speed()
|
||
|
{
|
||
|
local speed=`ping -W1 -c1 $1 2> /dev/null | grep "^rou" | cut -d '/' -f5`
|
||
|
echo $speed
|
||
|
}
|
||
|
function test_mirror_speed() #
|
||
|
{
|
||
|
rm $MIRRORS_SPEED_FILE 2> /dev/null; touch $MIRRORS_SPEED_FILE
|
||
|
cat $SOURCES_MIRRORS_FILE | while read mirror
|
||
|
do
|
||
|
if [ "$mirror" != "" ]; then
|
||
|
echo -e "正在ping $mirror 检测中"
|
||
|
local mirror_host=`echo $mirror | cut -d '/' -f3` #change mirror_url to host
|
||
|
local speed=$(get_ping_speed $mirror_host)
|
||
|
if [ "$speed" != "" ]; then
|
||
|
echo "测速时间是 $speed"
|
||
|
echo "$mirror $speed" >> $MIRRORS_SPEED_FILE
|
||
|
else
|
||
|
echo "链接失败."
|
||
|
fi
|
||
|
fi
|
||
|
done
|
||
|
}
|
||
|
function get_fast_mirror()
|
||
|
{
|
||
|
sort -k 2 -n -o $MIRRORS_SPEED_FILE $MIRRORS_SPEED_FILE
|
||
|
local fast_mirror=`head -n 1 $MIRRORS_SPEED_FILE | cut -d ' ' -f1`
|
||
|
echo $fast_mirror
|
||
|
}
|
||
|
function backup_sources()
|
||
|
{
|
||
|
echo -e "备份了你的旧列表.\n"
|
||
|
sudo mv /var/lib/tazpkg/mirror /var/lib/tazpkg/mirror.`date +%F-%R:%S`
|
||
|
}
|
||
|
function update_sources()
|
||
|
{
|
||
|
local mirror="$1"
|
||
|
local tmp=$(mktemp)
|
||
|
echo "$mirror/packages/$VERSION" >> $tmp
|
||
|
sudo cp "$tmp" /var/lib/tazpkg/mirror
|
||
|
sudo mv "$tmp" /tmp/rootfs/var/lib/tazpkg/mirror
|
||
|
echo -e "你的最快软件源已经update.\n";
|
||
|
}
|
||
|
echo -e "\n检测中 network connection.\n请稍候... c"
|
||
|
if [ "$(get_ping_speed $TEST_NETCONNECT_HOST)" == "" ]; then
|
||
|
echo -e "网络不通.\n请检查你的网络."; exit 1
|
||
|
else
|
||
|
echo -e "网络是连通的.\n"
|
||
|
test -f $SOURCES_MIRRORS_FILE
|
||
|
if [ "$?" != "0" ]; then
|
||
|
echo -e "$SOURCES_MIRRORS_FILE 不存在.\n"; exit 2
|
||
|
else
|
||
|
test_mirror_speed
|
||
|
fast_mirror=$(get_fast_mirror)
|
||
|
if [ "$fast_mirror" == "" ]; then
|
||
|
echo -e "无法找到联通的网站数据源,请检查你的列表 $SOURCES_MIRRORS_FILE\n"
|
||
|
exit 0
|
||
|
fi
|
||
|
echo -e "\n$最快的软件源网站已经自动选择,关闭本窗口. c"
|
||
|
backup_sources
|
||
|
update_sources $fast_mirror
|
||
|
sudo tazpkg recharge
|
||
|
fi
|
||
|
fi
|
||
|
exit 0
|