mirror of
https://github.com/aaPanel/aaPanel.git
synced 2026-09-10 03:27:39 +02:00
84 lines
2.0 KiB
Bash
84 lines
2.0 KiB
Bash
#!/bin/bash
|
|
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
|
|
export PATH
|
|
export LANG=en_US.UTF-8
|
|
export LANGUAGE=en_US:en
|
|
|
|
get_node_url(){
|
|
nodes=(http://183.235.223.101:3389 http://125.88.182.172:5880 http://128.1.164.196 http://103.224.251.67 http://download.bt.cn);
|
|
i=1;
|
|
for node in ${nodes[@]};
|
|
do
|
|
start=`date +%s.%N`
|
|
result=`curl -sS --connect-timeout 3 -m 60 $node/check.txt`
|
|
if [ "$result" = 'True' ];then
|
|
end=`date +%s.%N`
|
|
start_s=`echo $start | cut -d '.' -f 1`
|
|
start_ns=`echo $start | cut -d '.' -f 2`
|
|
end_s=`echo $end | cut -d '.' -f 1`
|
|
end_ns=`echo $end | cut -d '.' -f 2`
|
|
time_micro=$(( (10#$end_s-10#$start_s)*1000000 + (10#$end_ns/1000 - 10#$start_ns/1000) ))
|
|
time_ms=$(($time_micro/1000))
|
|
values[$i]=$time_ms;
|
|
urls[$time_ms]=$node
|
|
i=$(($i+1))
|
|
if [ $time_ms -lt 50 ];then
|
|
break;
|
|
fi
|
|
fi
|
|
done
|
|
j=5000
|
|
for n in ${values[@]};
|
|
do
|
|
if [ $j -gt $n ];then
|
|
j=$n
|
|
fi
|
|
if [ $j -lt 50 ];then
|
|
break;
|
|
fi
|
|
done
|
|
if [ $j = 5000 ];then
|
|
NODE_URL='http://download.bt.cn';
|
|
else
|
|
NODE_URL=${urls[$j]}
|
|
fi
|
|
|
|
}
|
|
|
|
GetCpuStat(){
|
|
time1=$(cat /proc/stat |grep 'cpu ')
|
|
sleep 1
|
|
time2=$(cat /proc/stat |grep 'cpu ')
|
|
cpuTime1=$(echo ${time1}|awk '{print $2+$3+$4+$5+$6+$7+$8}')
|
|
cpuTime2=$(echo ${time2}|awk '{print $2+$3+$4+$5+$6+$7+$8}')
|
|
runTime=$((${cpuTime2}-${cpuTime1}))
|
|
idelTime1=$(echo ${time1}|awk '{print $5}')
|
|
idelTime2=$(echo ${time2}|awk '{print $5}')
|
|
idelTime=$((${idelTime2}-${idelTime1}))
|
|
useTime=$(((${runTime}-${idelTime})*3))
|
|
[ ${useTime} -gt ${runTime} ] && cpuBusy="true"
|
|
if [ "${cpuBusy}" == "true" ]; then
|
|
cpuCore=$((${cpuInfo}/2))
|
|
else
|
|
cpuCore=$((${cpuInfo}-1))
|
|
fi
|
|
}
|
|
GetPackManager(){
|
|
if [ -f "/usr/bin/yum" ] && [ -f "/etc/yum.conf" ]; then
|
|
PM="yum"
|
|
elif [ -f "/usr/bin/apt-get" ] && [ -f "/usr/bin/dpkg" ]; then
|
|
PM="apt-get"
|
|
fi
|
|
}
|
|
cpuInfo=$(getconf _NPROCESSORS_ONLN)
|
|
if [ "${cpuInfo}" -ge "4" ];then
|
|
GetCpuStat
|
|
else
|
|
cpuCore="1"
|
|
fi
|
|
GetPackManager
|
|
if [ ! $NODE_URL ];then
|
|
echo '正在选择下载节点...';
|
|
get_node_url
|
|
fi
|