Update 测速中文
This commit is contained in:
270
测速中文
270
测速中文
@@ -59,7 +59,7 @@ install_tools() {
|
||||
fi
|
||||
|
||||
# 安装必要工具
|
||||
TOOLS=("curl" "wget" "ping" "bc")
|
||||
TOOLS=("curl" "wget" "ping" "bc" "pip3" "python3")
|
||||
for tool in "${TOOLS[@]}"; do
|
||||
if ! check_command "$tool"; then
|
||||
echo -e "${BLUE}安装 $tool...${NC}"
|
||||
@@ -76,6 +76,15 @@ install_tools() {
|
||||
"bc")
|
||||
$INSTALL_CMD bc >/dev/null 2>&1 || echo -e "${YELLOW}⚠️ bc 安装失败${NC}"
|
||||
;;
|
||||
"pip3"|"python3")
|
||||
if [ "$PM" = "apt-get" ]; then
|
||||
$INSTALL_CMD python3 python3-pip >/dev/null 2>&1 || echo -e "${YELLOW}⚠️ python3 安装失败${NC}"
|
||||
elif [ "$PM" = "yum" ] || [ "$PM" = "dnf" ]; then
|
||||
$INSTALL_CMD python3 python3-pip >/dev/null 2>&1 || echo -e "${YELLOW}⚠️ python3 安装失败${NC}"
|
||||
elif [ "$PM" = "apk" ]; then
|
||||
$INSTALL_CMD python3 py3-pip >/dev/null 2>&1 || echo -e "${YELLOW}⚠️ python3 安装失败${NC}"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
$INSTALL_CMD "$tool" >/dev/null 2>&1 || echo -e "${YELLOW}⚠️ $tool 安装失败${NC}"
|
||||
;;
|
||||
@@ -84,70 +93,134 @@ install_tools() {
|
||||
done
|
||||
}
|
||||
|
||||
# 安装speedtest
|
||||
# 清理和修复speedtest安装
|
||||
clean_speedtest() {
|
||||
echo -e "${BLUE}🧹 清理可能损坏的speedtest...${NC}"
|
||||
|
||||
# 卸载各种版本的speedtest
|
||||
apt-get remove -y speedtest-cli 2>/dev/null
|
||||
pip uninstall -y speedtest-cli 2>/dev/null
|
||||
pip3 uninstall -y speedtest-cli 2>/dev/null
|
||||
rm -f /usr/local/bin/speedtest-cli
|
||||
rm -f /usr/bin/speedtest
|
||||
rm -f /usr/bin/speedtest-cli
|
||||
|
||||
echo -e "${GREEN}✅ 清理完成${NC}"
|
||||
}
|
||||
|
||||
# 安装speedtest - 增强版本
|
||||
install_speedtest() {
|
||||
echo -e "${BLUE}📦 检查并安装speedtest...${NC}"
|
||||
|
||||
# 检查是否已安装
|
||||
if check_command speedtest || check_command speedtest-cli; then
|
||||
if check_command speedtest; then
|
||||
echo -e "${GREEN}✅ speedtest 已安装${NC}"
|
||||
speedtest --version
|
||||
return 0
|
||||
fi
|
||||
|
||||
# 尝试不同的安装方法
|
||||
echo -e "${BLUE}尝试安装speedtest...${NC}"
|
||||
# 清理旧版本
|
||||
clean_speedtest
|
||||
|
||||
# 方法1: 使用包管理器安装
|
||||
if [ "$PM" = "apt-get" ]; then
|
||||
if $INSTALL_CMD speedtest-cli >/dev/null 2>&1; then
|
||||
echo -e "${GREEN}✅ speedtest-cli 安装成功${NC}"
|
||||
return 0
|
||||
fi
|
||||
elif [ "$PM" = "yum" ] || [ "$PM" = "dnf" ]; then
|
||||
if $INSTALL_CMD speedtest-cli >/dev/null 2>&1; then
|
||||
echo -e "${GREEN}✅ speedtest-cli 安装成功${NC}"
|
||||
# 方法1: 安装官方ookla speedtest (首选)
|
||||
echo -e "${BLUE}尝试安装官方speedtest...${NC}"
|
||||
if check_command curl; then
|
||||
if curl -s https://install.speedtest.net/app/cli/install.deb.sh | bash >/dev/null 2>&1; then
|
||||
if $UPDATE_CMD >/dev/null 2>&1 && $INSTALL_CMD speedtest >/dev/null 2>&1; then
|
||||
echo -e "${GREEN}✅ 官方speedtest安装成功${NC}"
|
||||
speedtest --version
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# 方法2: 使用pip安装
|
||||
# 方法2: 直接下载二进制文件
|
||||
echo -e "${BLUE}尝试下载二进制speedtest...${NC}"
|
||||
if check_command wget; then
|
||||
ARCH=$(uname -m)
|
||||
if [ "$ARCH" = "x86_64" ]; then
|
||||
SPEEDTEST_URL="https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-x86_64.tgz"
|
||||
elif [ "$ARCH" = "aarch64" ]; then
|
||||
SPEEDTEST_URL="https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-aarch64.tgz"
|
||||
else
|
||||
SPEEDTEST_URL="https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-x86_64.tgz"
|
||||
fi
|
||||
|
||||
if wget -q -O speedtest.tgz "$SPEEDTEST_URL" && \
|
||||
tar -xzf speedtest.tgz && \
|
||||
mv speedtest /usr/local/bin/ && \
|
||||
chmod +x /usr/local/bin/speedtest; then
|
||||
echo -e "${GREEN}✅ 二进制speedtest安装成功${NC}"
|
||||
speedtest --version
|
||||
return 0
|
||||
fi
|
||||
rm -f speedtest.tgz
|
||||
fi
|
||||
|
||||
# 方法3: 使用pip安装
|
||||
echo -e "${BLUE}尝试pip安装speedtest-cli...${NC}"
|
||||
if check_command pip3; then
|
||||
if pip3 install speedtest-cli >/dev/null 2>&1; then
|
||||
echo -e "${GREEN}✅ speedtest-cli pip安装成功${NC}"
|
||||
return 0
|
||||
fi
|
||||
elif check_command pip; then
|
||||
if pip install speedtest-cli >/dev/null 2>&1; then
|
||||
echo -e "${GREEN}✅ speedtest-cli pip安装成功${NC}"
|
||||
fi
|
||||
|
||||
# 方法4: 使用包管理器安装
|
||||
echo -e "${BLUE}尝试包管理器安装...${NC}"
|
||||
if [ "$PM" = "apt-get" ]; then
|
||||
if $INSTALL_CMD speedtest-cli >/dev/null 2>&1; then
|
||||
echo -e "${GREEN}✅ speedtest-cli 包管理器安装成功${NC}"
|
||||
return 0
|
||||
fi
|
||||
elif [ "$PM" = "yum" ] || [ "$PM" = "dnf" ]; then
|
||||
if $INSTALL_CMD speedtest-cli >/dev/null 2>&1; then
|
||||
echo -e "${GREEN}✅ speedtest-cli 包管理器安装成功${NC}"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# 方法3: 使用curl下载官方speedtest
|
||||
if check_command curl; then
|
||||
echo -e "${BLUE}尝试下载官方speedtest...${NC}"
|
||||
if curl -s https://install.speedtest.net/app/cli/install.deb.sh | bash >/dev/null 2>&1; then
|
||||
if $INSTALL_CMD speedtest >/dev/null 2>&1; then
|
||||
echo -e "${GREEN}✅ 官方speedtest安装成功${NC}"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# 方法4: 使用wget下载speedtest-cli
|
||||
if check_command wget; then
|
||||
echo -e "${BLUE}尝试wget下载speedtest...${NC}"
|
||||
if wget -q -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py && \
|
||||
chmod +x speedtest-cli && mv speedtest-cli /usr/local/bin/; then
|
||||
echo -e "${GREEN}✅ speedtest-cli 下载安装成功${NC}"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
echo -e "${YELLOW}⚠️ speedtest安装失败,跳过测速功能${NC}"
|
||||
echo -e "${YELLOW}⚠️ speedtest安装失败,将使用备用测速方法${NC}"
|
||||
return 1
|
||||
}
|
||||
|
||||
# 备用网络测速方法
|
||||
backup_speed_test() {
|
||||
echo -e "${CYAN}🔄 使用备用方法进行网络测速...${NC}"
|
||||
|
||||
# 测试下载速度到多个测速服务器
|
||||
servers=(
|
||||
"http://speedtest.ftp.otenet.gr/files/test1Mb.db"
|
||||
"http://ipv4.download.thinkbroadband.com/1MB.zip"
|
||||
"http://proof.ovh.net/files/1Mb.dat"
|
||||
)
|
||||
|
||||
for server in "${servers[@]}"; do
|
||||
echo -e "${BLUE}测试服务器: $(basename $server)${NC}"
|
||||
if check_command wget; then
|
||||
start_time=$(date +%s)
|
||||
if wget -O /dev/null --timeout=10 --tries=2 "$server" >/dev/null 2>&1; then
|
||||
end_time=$(date +%s)
|
||||
duration=$((end_time - start_time))
|
||||
if [ $duration -eq 0 ]; then
|
||||
duration=1
|
||||
fi
|
||||
speed=$(echo "scale=2; 8 / $duration" | bc -l 2>/dev/null || echo "N/A")
|
||||
echo -e "${GREEN} 下载速度: ${speed} Mbps${NC}"
|
||||
break
|
||||
else
|
||||
echo -e "${YELLOW} 服务器不可用${NC}"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# 使用iperf3测试(如果可用)
|
||||
if check_command iperf3; then
|
||||
echo -e "${BLUE}使用iperf3测试...${NC}"
|
||||
iperf3 -c speedtest.serverius.net -p 5202 -t 5 -O 2 2>/dev/null | grep -E "sender|receiver" | head -2
|
||||
fi
|
||||
}
|
||||
|
||||
# 检查系统兼容性
|
||||
check_system() {
|
||||
echo -e "${BLUE}🔍 检查系统环境...${NC}"
|
||||
@@ -227,84 +300,44 @@ test_latency() {
|
||||
done
|
||||
}
|
||||
|
||||
# Speedtest测速
|
||||
# Speedtest测速 - 增强版本
|
||||
test_speed() {
|
||||
echo -e "${CYAN}🚀 进行Speedtest测速...${NC}"
|
||||
|
||||
# 调试信息
|
||||
echo -e "${BLUE}可用的speedtest命令:${NC}"
|
||||
which speedtest 2>/dev/null && echo -e " speedtest: $(speedtest --version 2>/dev/null || echo '无法获取版本')"
|
||||
which speedtest-cli 2>/dev/null && echo -e " speedtest-cli: $(speedtest-cli --version 2>/dev/null || echo '无法获取版本')"
|
||||
|
||||
# 检查是否有可用的speedtest命令
|
||||
SPEEDTEST_CMD=""
|
||||
if check_command speedtest; then
|
||||
SPEEDTEST_CMD="speedtest --simple"
|
||||
SPEEDTEST_CMD="speedtest --accept-license --accept-gdpr --simple"
|
||||
elif check_command speedtest-cli; then
|
||||
SPEEDTEST_CMD="speedtest-cli --simple"
|
||||
elif [ -f /usr/local/bin/speedtest-cli ]; then
|
||||
SPEEDTEST_CMD="/usr/local/bin/speedtest-cli --simple"
|
||||
elif [ -f /usr/local/bin/speedtest ]; then
|
||||
SPEEDTEST_CMD="/usr/local/bin/speedtest --accept-license --accept-gdpr --simple"
|
||||
fi
|
||||
|
||||
if [ -n "$SPEEDTEST_CMD" ]; then
|
||||
echo -e "${BLUE}使用命令: $SPEEDTEST_CMD${NC}"
|
||||
result=$($SPEEDTEST_CMD 2>/dev/null)
|
||||
|
||||
if [ $? -eq 0 ] && [ -n "$result" ]; then
|
||||
echo "$result" | sed -E "
|
||||
s/Ping:/🔄 网络延迟:/
|
||||
s/Download:/⬇️ 下载速度:/
|
||||
s/Upload:/⬆️ 上传速度:/
|
||||
s/ ms/ 毫秒/
|
||||
s/ Mbit\/s/ Mbit\/秒/
|
||||
" | while read line; do
|
||||
if [[ $line == *"网络延迟"* ]]; then
|
||||
latency=$(echo "$line" | grep -o '[0-9.]*')
|
||||
if command -v bc >/dev/null 2>&1 && [ -n "$latency" ]; then
|
||||
if (( $(echo "$latency < 50" | bc -l 2>/dev/null) )); then
|
||||
echo -e "${GREEN}$line ✅${NC}"
|
||||
elif (( $(echo "$latency < 100" | bc -l 2>/dev/null) )); then
|
||||
echo -e "${GREEN}$line 👍${NC}"
|
||||
elif (( $(echo "$latency < 200" | bc -l 2>/dev/null) )); then
|
||||
echo -e "${YELLOW}$line ⚠️${NC}"
|
||||
# 设置超时,防止卡住
|
||||
timeout 60 bash -c "$SPEEDTEST_CMD" 2>/dev/null
|
||||
result=$?
|
||||
|
||||
if [ $result -eq 0 ]; then
|
||||
echo -e "${GREEN}✅ speedtest测速成功${NC}"
|
||||
elif [ $result -eq 124 ]; then
|
||||
echo -e "${YELLOW}⚠️ speedtest测速超时${NC}"
|
||||
backup_speed_test
|
||||
else
|
||||
echo -e "${RED}$line ❌${NC}"
|
||||
echo -e "${YELLOW}⚠️ speedtest测速失败,错误码: $result${NC}"
|
||||
backup_speed_test
|
||||
fi
|
||||
else
|
||||
echo -e "${GREEN}$line${NC}"
|
||||
fi
|
||||
elif [[ $line == *"下载速度"* ]]; then
|
||||
speed=$(echo "$line" | grep -o '[0-9.]*')
|
||||
if command -v bc >/dev/null 2>&1 && [ -n "$speed" ]; then
|
||||
if (( $(echo "$speed > 50" | bc -l 2>/dev/null) )); then
|
||||
echo -e "${GREEN}$line 🚀${NC}"
|
||||
elif (( $(echo "$speed > 10" | bc -l 2>/dev/null) )); then
|
||||
echo -e "${GREEN}$line 👍${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}$line ⚠️${NC}"
|
||||
fi
|
||||
else
|
||||
echo -e "${GREEN}$line${NC}"
|
||||
fi
|
||||
elif [[ $line == *"上传速度"* ]]; then
|
||||
speed=$(echo "$line" | grep -o '[0-9.]*')
|
||||
if command -v bc >/dev/null 2>&1 && [ -n "$speed" ]; then
|
||||
if (( $(echo "$speed > 20" | bc -l 2>/dev/null) )); then
|
||||
echo -e "${BLUE}$line 🚀${NC}"
|
||||
elif (( $(echo "$speed > 5" | bc -l 2>/dev/null) )); then
|
||||
echo -e "${BLUE}$line 👍${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}$line ⚠️${NC}"
|
||||
fi
|
||||
else
|
||||
echo -e "${BLUE}$line${NC}"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ speedtest测速失败,跳过此测试${NC}"
|
||||
fi
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ 未找到speedtest,跳过测速功能${NC}"
|
||||
echo -e "${BLUE}💡 提示: 可以手动安装speedtest:${NC}"
|
||||
echo -e "${BLUE} Ubuntu/Debian: apt-get install speedtest-cli${NC}"
|
||||
echo -e "${BLUE} CentOS/RHEL: yum install speedtest-cli${NC}"
|
||||
echo -e "${BLUE} 或使用: curl -s https://install.speedtest.net/app/cli/install.deb.sh | sudo bash${NC}"
|
||||
echo -e "${YELLOW}⚠️ 未找到speedtest命令${NC}"
|
||||
backup_speed_test
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -312,7 +345,8 @@ test_speed() {
|
||||
show_system_info() {
|
||||
echo -e "${PURPLE}"
|
||||
echo "=================================================="
|
||||
echo " 🌈 精准网络测速脚本"
|
||||
echo " 🌈 精准网络测速脚本 v3.0"
|
||||
echo " 增强版 - 多方法测速 | 自动修复 | 备用方案"
|
||||
echo " 支持: Ubuntu/Debian/CentOS/RHEL"
|
||||
echo "=================================================="
|
||||
echo -e "${NC}"
|
||||
@@ -329,23 +363,34 @@ show_usage() {
|
||||
echo -e "${GREEN}选项:${NC}"
|
||||
echo -e " -h, --help 显示此帮助信息"
|
||||
echo -e " -v, --version 显示版本信息"
|
||||
echo -e " -f, --force 强制重新安装speedtest"
|
||||
echo -e ""
|
||||
echo -e "${GREEN}功能:${NC}"
|
||||
echo -e " ✅ 系统环境检测"
|
||||
echo -e " ✅ 自动安装依赖工具"
|
||||
echo -e " ✅ 网络连通性测试"
|
||||
echo -e " ✅ 多节点延迟测试"
|
||||
echo -e " ✅ Speedtest网速测试"
|
||||
echo -e " ✅ Speedtest网速测试 (多方法)"
|
||||
echo -e " ✅ 备用测速方案"
|
||||
echo -e " ✅ 自动修复安装问题"
|
||||
echo -e ""
|
||||
echo -e "${GREEN}示例:${NC}"
|
||||
echo -e " $0 # 运行完整测试"
|
||||
echo -e " $0 --force # 强制重新安装speedtest"
|
||||
echo -e " $0 --help # 显示帮助"
|
||||
}
|
||||
|
||||
# 显示版本信息
|
||||
show_version() {
|
||||
echo -e "${GREEN}精准网络测速脚本 v2.0${NC}"
|
||||
echo -e "支持多系统网络性能测试"
|
||||
echo -e "${GREEN}精准网络测速脚本 v3.0${NC}"
|
||||
echo -e "增强版 - 多方法测速 | 自动修复 | 备用方案"
|
||||
}
|
||||
|
||||
# 强制重新安装speedtest
|
||||
force_reinstall_speedtest() {
|
||||
echo -e "${YELLOW}🔄 强制重新安装speedtest...${NC}"
|
||||
clean_speedtest
|
||||
install_speedtest
|
||||
}
|
||||
|
||||
# 主函数
|
||||
@@ -360,6 +405,9 @@ main() {
|
||||
show_version
|
||||
exit 0
|
||||
;;
|
||||
-f|--force)
|
||||
FORCE_REINSTALL=true
|
||||
;;
|
||||
*)
|
||||
# 正常执行
|
||||
;;
|
||||
@@ -367,13 +415,19 @@ main() {
|
||||
|
||||
show_system_info
|
||||
install_tools
|
||||
echo ""
|
||||
|
||||
if [ "$FORCE_REINSTALL" = true ]; then
|
||||
force_reinstall_speedtest
|
||||
else
|
||||
install_speedtest
|
||||
fi
|
||||
|
||||
echo ""
|
||||
test_connectivity
|
||||
echo ""
|
||||
test_latency
|
||||
echo ""
|
||||
install_speedtest
|
||||
echo ""
|
||||
test_speed
|
||||
echo ""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user