补充 各个脚本
This commit is contained in:
parent
91e6ae5add
commit
b2422ca12d
|
@ -0,0 +1,109 @@
|
||||||
|
# XIU2/CloudflareSpeedTest - Script
|
||||||
|
|
||||||
|
这里都是一些基于 **XIU2/CloudflareSpeedTest** 并**扩展更多功能**的脚本。
|
||||||
|
有什么现有脚本功能上的建议可以告诉我,如果你有一些自用好用的脚本也可以通过 [**Issues**](https://github.com/XIU2/CloudflareSpeedTest/issues) 或 Pull requests 发给我添加到这里让更多人用到(会标注作者的~
|
||||||
|
|
||||||
|
> 小提示:点击↖左上角的三横杠图标按钮即可查看目录~
|
||||||
|
|
||||||
|
****
|
||||||
|
## 📑 cfst_hosts.sh / cfst_hosts.bat (已内置)
|
||||||
|
|
||||||
|
运行 CloudflareST 获得最快 IP 后,脚本会替换 Hosts 文件中的旧 CDN IP。
|
||||||
|
|
||||||
|
> **使用说明:https://github.com/XIU2/CloudflareSpeedTest/issues/42**
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><code><strong>「 更新日志」</strong></code></summary>
|
||||||
|
|
||||||
|
****
|
||||||
|
|
||||||
|
#### 2021年12月17日,版本 v1.0.6
|
||||||
|
- **1. 优化** [找不到满足条件的 IP 就一直循环测速] 功能,在指定下载测速下限时没有重新测速的问题(默认注释)
|
||||||
|
|
||||||
|
#### 2021年12月17日,版本 v1.0.3
|
||||||
|
- **1. 新增** 找不到满足条件的 IP 就一直循环测速功能(默认注释)
|
||||||
|
- **2. 优化** 代码
|
||||||
|
|
||||||
|
#### 2021年09月29日,版本 v1.0.2
|
||||||
|
- **1. 修复** 当测速结果 IP 数量为 0 时,脚本没有退出的问题
|
||||||
|
|
||||||
|
#### 2021年04月29日,版本 v1.0.1
|
||||||
|
- **1. 优化** 不再需要加上 -p 0 参数来避免回车键退出了(现在可以即显示结果,又不用担心回车键退出程序)
|
||||||
|
|
||||||
|
#### 2021年01月28日,版本 v1.0.0
|
||||||
|
- **1. 发布** 第一个版本
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
****
|
||||||
|
|
||||||
|
## 📑 cfst_3proxy.bat (已内置)
|
||||||
|
|
||||||
|
该脚本的作用为 CloudflareST 测速后获取最快 IP 并替换 3Proxy 配置文件中的 Cloudflare CDN IP。
|
||||||
|
可以把所有 Cloudflare CDN IP 都重定向至最快 IP,实现一劳永逸的加速所有使用 Cloudflare CDN 的网站(不需要一个个添加域名到 Hosts 了)。
|
||||||
|
|
||||||
|
> **使用说明:https://github.com/XIU2/CloudflareSpeedTest/discussions/71**
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><code><strong>「 更新日志」</strong></code></summary>
|
||||||
|
|
||||||
|
****
|
||||||
|
|
||||||
|
#### 2021年12月17日,版本 v1.0.5
|
||||||
|
- **1. 优化** [找不到满足条件的 IP 就一直循环测速] 功能,在指定下载测速下限时没有重新测速的问题(默认注释)
|
||||||
|
|
||||||
|
#### 2021年12月17日,版本 v1.0.4
|
||||||
|
- **1. 新增** 找不到满足条件的 IP 就一直循环测速功能(默认注释)
|
||||||
|
- **2. 优化** 代码
|
||||||
|
|
||||||
|
#### 2021年09月29日,版本 v1.0.3
|
||||||
|
- **1. 修复** 当测速结果 IP 数量为 0 时,脚本没有退出的问题
|
||||||
|
|
||||||
|
#### 2021年04月29日,版本 v1.0.2
|
||||||
|
- **1. 优化** 不再需要加上 -p 0 参数来避免回车键退出了(现在可以即显示结果,又不用担心回车键退出程序)
|
||||||
|
|
||||||
|
#### 2021年03月16日,版本 v1.0.1
|
||||||
|
- **1. 优化** 代码及注释内容
|
||||||
|
|
||||||
|
#### 2021年03月13日,版本 v1.0.0
|
||||||
|
- **1. 发布** 第一个版本
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
****
|
||||||
|
|
||||||
|
## 📑 cfst_ddns.sh / cfst_ddns.bat
|
||||||
|
|
||||||
|
如果你的域名托管在 Cloudflare,则可以通过 Cloudflare 官方提供的 API 来自动更新域名解析记录!
|
||||||
|
|
||||||
|
> **使用说明:https://github.com/XIU2/CloudflareSpeedTest/issues/40**
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><code><strong>「 更新日志」</strong></code></summary>
|
||||||
|
|
||||||
|
****
|
||||||
|
|
||||||
|
#### 2021年12月17日,版本 v1.0.4
|
||||||
|
- **1. 新增** 找不到满足条件的 IP 就一直循环测速功能(默认注释)
|
||||||
|
- **2. 优化** 代码
|
||||||
|
|
||||||
|
#### 2021年09月29日,版本 v1.0.3
|
||||||
|
- **1. 修复** 当测速结果 IP 数量为 0 时,脚本没有退出的问题
|
||||||
|
|
||||||
|
#### 2021年04月29日,版本 v1.0.2
|
||||||
|
- **1. 优化** 不再需要加上 -p 0 参数来避免回车键退出了(现在可以即显示结果,又不用担心回车键退出程序)
|
||||||
|
|
||||||
|
#### 2021年01月27日,版本 v1.0.1
|
||||||
|
- **1. 优化** 配置从文件中读取
|
||||||
|
|
||||||
|
#### 2021年01月26日,版本 v1.0.0
|
||||||
|
- **1. 发布** 第一个版本
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
****
|
||||||
|
|
||||||
|
## 功能建议/问题反馈
|
||||||
|
|
||||||
|
如果你遇到什么问题,可以先去 [**Issues**](https://github.com/XIU2/CloudflareSpeedTest/issues) 里看看是否有别人问过了(记得去看下 [**Closed**](https://github.com/XIU2/CloudflareSpeedTest/issues?q=is%3Aissue+is%3Aclosed) 的)。
|
||||||
|
如果没找到类似问题,请新开个 [**Issues**](https://github.com/XIU2/CloudflareSpeedTest/issues/new) 来告诉我!
|
|
@ -0,0 +1,136 @@
|
||||||
|
:: --------------------------------------------------------------
|
||||||
|
:: 项目: CloudflareSpeedTest 自动更新 3Proxy
|
||||||
|
:: 版本: 1.0.5
|
||||||
|
:: 作者: XIU2
|
||||||
|
:: 项目: https://github.com/XIU2/CloudflareSpeedTest
|
||||||
|
:: --------------------------------------------------------------
|
||||||
|
@echo off
|
||||||
|
Setlocal Enabledelayedexpansion
|
||||||
|
|
||||||
|
::判断是否已获得管理员权限
|
||||||
|
|
||||||
|
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
|
||||||
|
|
||||||
|
if '%errorlevel%' NEQ '0' (
|
||||||
|
goto UACPrompt
|
||||||
|
) else ( goto gotAdmin )
|
||||||
|
|
||||||
|
::写出 vbs 脚本以管理员身份运行本脚本(bat)
|
||||||
|
|
||||||
|
:UACPrompt
|
||||||
|
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
|
||||||
|
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
|
||||||
|
"%temp%\getadmin.vbs"
|
||||||
|
exit /B
|
||||||
|
|
||||||
|
::如果临时 vbs 脚本存在,则删除
|
||||||
|
|
||||||
|
:gotAdmin
|
||||||
|
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
|
||||||
|
pushd "%CD%"
|
||||||
|
CD /D "%~dp0"
|
||||||
|
|
||||||
|
|
||||||
|
::上面是判断是否以获得管理员权限,如果没有就去获取,下面才是本脚本主要代码
|
||||||
|
|
||||||
|
|
||||||
|
::如果 nowip_3proxy.txt 文件不存在,说明是第一次运行该脚本
|
||||||
|
if not exist "nowip_3proxy.txt" (
|
||||||
|
echo 该脚本的作用为 CloudflareST 测速后获取最快 IP 并替换 3Proxy 配置文件中的 Cloudflare CDN IP。
|
||||||
|
echo 可以把所有 Cloudflare CDN IP 都重定向至最快 IP,实现一劳永逸的加速所有使用 Cloudflare CDN 的网站(不需要一个个添加域名到 Hosts 了)。
|
||||||
|
echo 使用前请先阅读:https://github.com/XIU2/CloudflareSpeedTest/discussions/71
|
||||||
|
echo.
|
||||||
|
set /p nowip="输入当前 3Proxy 正在使用的 Cloudflare CDN IP 并回车(后续不再需要该步骤):"
|
||||||
|
echo !nowip!>nowip_3proxy.txt
|
||||||
|
echo.
|
||||||
|
)
|
||||||
|
|
||||||
|
::从 nowip_3proxy.txt 文件获取当前使用的 Cloudflare CDN IP
|
||||||
|
set /p nowip=<nowip_3proxy.txt
|
||||||
|
echo 开始测速...
|
||||||
|
|
||||||
|
|
||||||
|
:: 这个 RESET 是给需要 "找不到满足条件的 IP 就一直循环测速下去" 功能的人准备的
|
||||||
|
:: 如果需要这个功能就把下面 3 个 goto :STOP 改为 goto :RESET 即可
|
||||||
|
:RESET
|
||||||
|
|
||||||
|
|
||||||
|
:: 这里可以自己添加、修改 CloudflareST 的运行参数,echo.| 的作用是自动回车退出程序(不再需要加上 -p 0 参数了)
|
||||||
|
echo.|CloudflareST.exe -o "result_3proxy.txt"
|
||||||
|
|
||||||
|
|
||||||
|
:: 判断结果文件是否存在,如果不存在说明结果为 0
|
||||||
|
if not exist result_3proxy.txt (
|
||||||
|
echo.
|
||||||
|
echo CloudflareST 测速结果 IP 数量为 0,跳过下面步骤...
|
||||||
|
goto :STOP
|
||||||
|
)
|
||||||
|
|
||||||
|
:: 获取第一行的最快 IP
|
||||||
|
for /f "tokens=1 delims=," %%i in (result_3proxy.txt) do (
|
||||||
|
set /a n+=1
|
||||||
|
If !n!==2 (
|
||||||
|
set bestip=%%i
|
||||||
|
goto :END
|
||||||
|
)
|
||||||
|
)
|
||||||
|
:END
|
||||||
|
|
||||||
|
:: 判断刚刚获取的最快 IP 是否为空,以及是否和旧 IP 一样
|
||||||
|
if "%bestip%"=="" (
|
||||||
|
echo.
|
||||||
|
echo CloudflareST 测速结果 IP 数量为 0,跳过下面步骤...
|
||||||
|
goto :STOP
|
||||||
|
)
|
||||||
|
if "%bestip%"=="%nowip%" (
|
||||||
|
echo.
|
||||||
|
echo CloudflareST 测速结果 IP 数量为 0,跳过下面步骤...
|
||||||
|
goto :STOP
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
:: 下面这段代码是 "找不到满足条件的 IP 就一直循环测速下去" 才需要的代码
|
||||||
|
:: 考虑到当指定了下载速度下限,但一个满足全部条件的 IP 都没找到时,CloudflareST 就会输出所有 IP 结果
|
||||||
|
:: 因此当你指定 -sl 参数时,需要移除下面这段代码开头的这个 :: 冒号注释符,来做文件行数判断(比如下载测速数量:10 个,那么下面的值就设在为 11)
|
||||||
|
::set /a v=0
|
||||||
|
::for /f %%a in ('type result_3proxy.txt') do set /a v+=1
|
||||||
|
::if %v% GTR 11 (
|
||||||
|
:: echo.
|
||||||
|
:: echo CloudflareST 测速结果没有找到一个完全满足条件的 IP,重新测速...
|
||||||
|
:: goto :RESET
|
||||||
|
::)
|
||||||
|
|
||||||
|
|
||||||
|
echo %bestip%>nowip_3proxy.txt
|
||||||
|
echo.
|
||||||
|
echo 旧 IP 为 %nowip%
|
||||||
|
echo 新 IP 为 %bestip%
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
:: 请将引号内的 D:\Program Files\3Proxy 改为你的 3Proxy 程序所在目录
|
||||||
|
CD /d "D:\Program Files\3Proxy"
|
||||||
|
:: 请确保运行该脚本前,已经测试过 3Proxy 可以正常运行并使用!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo 开始备份 3proxy.cfg 文件(3proxy.cfg_backup)...
|
||||||
|
copy 3proxy.cfg 3proxy.cfg_backup
|
||||||
|
echo.
|
||||||
|
echo 开始替换...
|
||||||
|
(
|
||||||
|
for /f "tokens=*" %%i in (3proxy.cfg_backup) do (
|
||||||
|
set s=%%i
|
||||||
|
set s=!s:%nowip%=%bestip%!
|
||||||
|
echo !s!
|
||||||
|
)
|
||||||
|
)>3proxy.cfg
|
||||||
|
|
||||||
|
net stop 3proxy
|
||||||
|
net start 3proxy
|
||||||
|
|
||||||
|
echo 完成...
|
||||||
|
echo.
|
||||||
|
:STOP
|
||||||
|
pause
|
|
@ -0,0 +1,38 @@
|
||||||
|
:: --------------------------------------------------------------
|
||||||
|
:: 项目: CloudflareSpeedTest 自动更新域名解析记录
|
||||||
|
:: 版本: 1.0.4
|
||||||
|
:: 作者: XIU2
|
||||||
|
:: 项目: https://github.com/XIU2/CloudflareSpeedTest
|
||||||
|
:: --------------------------------------------------------------
|
||||||
|
@echo off
|
||||||
|
Setlocal Enabledelayedexpansion
|
||||||
|
|
||||||
|
:: 这里可以自己添加、修改 CloudflareST 的运行参数,echo.| 的作用是自动回车退出程序(不再需要加上 -p 0 参数了)
|
||||||
|
echo.|CloudflareST.exe -o "result_ddns.txt"
|
||||||
|
|
||||||
|
:: 判断结果文件是否存在,如果不存在说明结果为 0
|
||||||
|
if not exist result_ddns.txt (
|
||||||
|
echo.
|
||||||
|
echo CloudflareST 测速结果 IP 数量为 0,跳过下面步骤...
|
||||||
|
goto :END
|
||||||
|
)
|
||||||
|
|
||||||
|
for /f "tokens=1 delims=," %%i in (result_ddns.txt) do (
|
||||||
|
Set /a n+=1
|
||||||
|
If !n!==2 (
|
||||||
|
Echo %%i
|
||||||
|
if "%%i"=="" (
|
||||||
|
echo.
|
||||||
|
echo CloudflareST 测速结果 IP 数量为 0,跳过下面步骤...
|
||||||
|
goto :END
|
||||||
|
)
|
||||||
|
curl -X PUT "https://api.cloudflare.com/client/v4/zones/域名ID/dns_records/域名解析记录ID" ^
|
||||||
|
-H "X-Auth-Email: 账号邮箱" ^
|
||||||
|
-H "X-Auth-Key: 前面获取的 API 令牌" ^
|
||||||
|
-H "Content-Type: application/json" ^
|
||||||
|
--data "{\"type\":\"A\",\"name\":\"完整域名\",\"content\":\"%%i\",\"ttl\":1,\"proxied\":true}"
|
||||||
|
goto :END
|
||||||
|
)
|
||||||
|
)
|
||||||
|
:END
|
||||||
|
pause
|
|
@ -0,0 +1,55 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
|
||||||
|
export PATH
|
||||||
|
# --------------------------------------------------------------
|
||||||
|
# 项目: CloudflareSpeedTest 自动更新域名解析记录
|
||||||
|
# 版本: 1.0.4
|
||||||
|
# 作者: XIU2
|
||||||
|
# 项目: https://github.com/XIU2/CloudflareSpeedTest
|
||||||
|
# --------------------------------------------------------------
|
||||||
|
|
||||||
|
_READ() {
|
||||||
|
[[ ! -e "cfst_ddns.conf" ]] && echo -e "[错误] 配置文件不存在 [cfst_ddns.conf] !" && exit 1
|
||||||
|
CONFIG=$(cat "cfst_ddns.conf")
|
||||||
|
FOLDER=$(echo "${CONFIG}"|grep 'FOLDER='|awk -F '=' '{print $NF}')
|
||||||
|
[[ -z "${FOLDER}" ]] && echo -e "[错误] 缺少配置项 [FOLDER] !" && exit 1
|
||||||
|
ZONE_ID=$(echo "${CONFIG}"|grep 'ZONE_ID='|awk -F '=' '{print $NF}')
|
||||||
|
[[ -z "${ZONE_ID}" ]] && echo -e "[错误] 缺少配置项 [ZONE_ID] !" && exit 1
|
||||||
|
DNS_RECORDS_ID=$(echo "${CONFIG}"|grep 'DNS_RECORDS_ID='|awk -F '=' '{print $NF}')
|
||||||
|
[[ -z "${DNS_RECORDS_ID}" ]] && echo -e "[错误] 缺少配置项 [DNS_RECORDS_ID] !" && exit 1
|
||||||
|
EMAIL=$(echo "${CONFIG}"|grep 'EMAIL='|awk -F '=' '{print $NF}')
|
||||||
|
[[ -z "${EMAIL}" ]] && echo -e "[错误] 缺少配置项 [EMAIL] !" && exit 1
|
||||||
|
KEY=$(echo "${CONFIG}"|grep 'KEY='|awk -F '=' '{print $NF}')
|
||||||
|
[[ -z "${KEY}" ]] && echo -e "[错误] 缺少配置项 [KEY] !" && exit 1
|
||||||
|
TYPE=$(echo "${CONFIG}"|grep 'TYPE='|awk -F '=' '{print $NF}')
|
||||||
|
[[ -z "${TYPE}" ]] && echo -e "[错误] 缺少配置项 [TYPE] !" && exit 1
|
||||||
|
NAME=$(echo "${CONFIG}"|grep 'NAME='|awk -F '=' '{print $NF}')
|
||||||
|
[[ -z "${NAME}" ]] && echo -e "[错误] 缺少配置项 [NAME] !" && exit 1
|
||||||
|
TTL=$(echo "${CONFIG}"|grep 'TTL='|awk -F '=' '{print $NF}')
|
||||||
|
[[ -z "${TTL}" ]] && echo -e "[错误] 缺少配置项 [TTL] !" && exit 1
|
||||||
|
PROXIED=$(echo "${CONFIG}"|grep 'PROXIED='|awk -F '=' '{print $NF}')
|
||||||
|
[[ -z "${PROXIED}" ]] && echo -e "[错误] 缺少配置项 [PROXIED] !" && exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
_UPDATE() {
|
||||||
|
# 这里可以自己添加、修改 CloudflareST 的运行参数
|
||||||
|
./CloudflareST -o "result_ddns.txt"
|
||||||
|
|
||||||
|
# 判断结果文件是否存在,如果不存在说明结果为 0
|
||||||
|
[[ ! -e "result_ddns.txt" ]] && echo "CloudflareST 测速结果 IP 数量为 0,跳过下面步骤..." && exit 0
|
||||||
|
|
||||||
|
CONTENT=$(sed -n "2,1p" result_ddns.txt | awk -F, '{print $1}')
|
||||||
|
if [[ -z "${CONTENT}" ]]; then
|
||||||
|
echo "CloudflareST 测速结果 IP 数量为 0,跳过下面步骤..."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
curl -X PUT "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records/${DNS_RECORDS_ID}" \
|
||||||
|
-H "X-Auth-Email: ${EMAIL}" \
|
||||||
|
-H "X-Auth-Key: ${KEY}" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
--data "{\"type\":\"${TYPE}\",\"name\":\"${NAME}\",\"content\":\"${CONTENT}\",\"ttl\":${TTL},\"proxied\":${PROXIED}}"
|
||||||
|
}
|
||||||
|
|
||||||
|
_READ
|
||||||
|
cd "${FOLDER}"
|
||||||
|
_UPDATE
|
|
@ -0,0 +1,126 @@
|
||||||
|
:: --------------------------------------------------------------
|
||||||
|
:: 项目: CloudflareSpeedTest 自动更新 Hosts
|
||||||
|
:: 版本: 1.0.4
|
||||||
|
:: 作者: XIU2
|
||||||
|
:: 项目: https://github.com/XIU2/CloudflareSpeedTest
|
||||||
|
:: --------------------------------------------------------------
|
||||||
|
@echo off
|
||||||
|
Setlocal Enabledelayedexpansion
|
||||||
|
|
||||||
|
::判断是否已获得管理员权限
|
||||||
|
|
||||||
|
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
|
||||||
|
|
||||||
|
if '%errorlevel%' NEQ '0' (
|
||||||
|
goto UACPrompt
|
||||||
|
) else ( goto gotAdmin )
|
||||||
|
|
||||||
|
::写出 vbs 脚本以管理员身份运行本脚本(bat)
|
||||||
|
|
||||||
|
:UACPrompt
|
||||||
|
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
|
||||||
|
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
|
||||||
|
"%temp%\getadmin.vbs"
|
||||||
|
exit /B
|
||||||
|
|
||||||
|
::如果临时 vbs 脚本存在,则删除
|
||||||
|
|
||||||
|
:gotAdmin
|
||||||
|
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
|
||||||
|
pushd "%CD%"
|
||||||
|
CD /D "%~dp0"
|
||||||
|
|
||||||
|
|
||||||
|
::上面是判断是否以获得管理员权限,如果没有就去获取,下面才是本脚本主要代码
|
||||||
|
|
||||||
|
|
||||||
|
::如果 nowip_hosts.txt 文件不存在,说明是第一次运行该脚本
|
||||||
|
if not exist "nowip_hosts.txt" (
|
||||||
|
echo 该脚本的作用为 CloudflareST 测速后获取最快 IP 并替换 Hosts 中的 Cloudflare CDN IP。
|
||||||
|
echo 使用前请先阅读:https://github.com/XIU2/CloudflareSpeedTest/issues/42#issuecomment-768273768
|
||||||
|
echo.
|
||||||
|
echo 第一次使用,请先将 Hosts 中所有 Cloudflare CDN IP 统一改为一个 IP。
|
||||||
|
set /p nowip="输入该 Cloudflare CDN IP 并回车(后续不再需要该步骤):"
|
||||||
|
echo !nowip!>nowip_hosts.txt
|
||||||
|
echo.
|
||||||
|
)
|
||||||
|
|
||||||
|
::从 nowip_hosts.txt 文件获取当前 Hosts 中使用的 Cloudflare CDN IP
|
||||||
|
set /p nowip=<nowip_hosts.txt
|
||||||
|
echo 开始测速...
|
||||||
|
|
||||||
|
|
||||||
|
:: 这个 RESET 是给需要 "找不到满足条件的 IP 就一直循环测速下去" 功能的人准备的
|
||||||
|
:: 如果需要这个功能就把下面 3 个 goto :STOP 改为 goto :RESET 即可
|
||||||
|
:RESET
|
||||||
|
|
||||||
|
|
||||||
|
:: 这里可以自己添加、修改 CloudflareST 的运行参数,echo.| 的作用是自动回车退出程序(不再需要加上 -p 0 参数了)
|
||||||
|
echo.|CloudflareST.exe -o "result_hosts.txt"
|
||||||
|
|
||||||
|
|
||||||
|
:: 判断结果文件是否存在,如果不存在说明结果为 0
|
||||||
|
if not exist result_hosts.txt (
|
||||||
|
echo.
|
||||||
|
echo CloudflareST 测速结果 IP 数量为 0,跳过下面步骤...
|
||||||
|
goto :STOP
|
||||||
|
)
|
||||||
|
|
||||||
|
:: 获取第一行的最快 IP
|
||||||
|
for /f "tokens=1 delims=," %%i in (result_hosts.txt) do (
|
||||||
|
SET /a n+=1
|
||||||
|
If !n!==2 (
|
||||||
|
SET bestip=%%i
|
||||||
|
goto :END
|
||||||
|
)
|
||||||
|
)
|
||||||
|
:END
|
||||||
|
|
||||||
|
:: 判断刚刚获取的最快 IP 是否为空,以及是否和旧 IP 一样
|
||||||
|
if "%bestip%"=="" (
|
||||||
|
echo.
|
||||||
|
echo CloudflareST 测速结果 IP 数量为 0,跳过下面步骤...
|
||||||
|
goto :STOP
|
||||||
|
)
|
||||||
|
if "%bestip%"=="%nowip%" (
|
||||||
|
echo.
|
||||||
|
echo CloudflareST 测速结果 IP 数量为 0,跳过下面步骤...
|
||||||
|
goto :STOP
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
:: 下面这段代码是 "找不到满足条件的 IP 就一直循环测速下去" 才需要的代码
|
||||||
|
:: 考虑到当指定了下载速度下限,但一个满足全部条件的 IP 都没找到时,CloudflareST 就会输出所有 IP 结果
|
||||||
|
:: 因此当你指定 -sl 参数时,需要移除下面这段代码开头的这个 :: 冒号注释符,来做文件行数判断(比如下载测速数量:10 个,那么下面的值就设在为 11)
|
||||||
|
::set /a v=0
|
||||||
|
::for /f %%a in ('type result_hosts.txt') do set /a v+=1
|
||||||
|
::if %v% GTR 11 (
|
||||||
|
:: echo.
|
||||||
|
:: echo CloudflareST 测速结果没有找到一个完全满足条件的 IP,重新测速...
|
||||||
|
:: goto :RESET
|
||||||
|
::)
|
||||||
|
|
||||||
|
|
||||||
|
echo %bestip%>nowip_hosts.txt
|
||||||
|
echo.
|
||||||
|
echo 旧 IP 为 %nowip%
|
||||||
|
echo 新 IP 为 %bestip%
|
||||||
|
|
||||||
|
CD /d "C:\Windows\System32\drivers\etc"
|
||||||
|
echo.
|
||||||
|
echo 开始备份 Hosts 文件(hosts_backup)...
|
||||||
|
copy hosts hosts_backup
|
||||||
|
echo.
|
||||||
|
echo 开始替换...
|
||||||
|
(
|
||||||
|
for /f "tokens=*" %%i in (hosts_backup) do (
|
||||||
|
set s=%%i
|
||||||
|
set s=!s:%nowip%=%bestip%!
|
||||||
|
echo !s!
|
||||||
|
)
|
||||||
|
)>hosts
|
||||||
|
|
||||||
|
echo 完成...
|
||||||
|
echo.
|
||||||
|
:STOP
|
||||||
|
pause
|
|
@ -0,0 +1,63 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
|
||||||
|
export PATH
|
||||||
|
# --------------------------------------------------------------
|
||||||
|
# 项目: CloudflareSpeedTest 自动更新 Hosts
|
||||||
|
# 版本: 1.0.4
|
||||||
|
# 作者: XIU2
|
||||||
|
# 项目: https://github.com/XIU2/CloudflareSpeedTest
|
||||||
|
# --------------------------------------------------------------
|
||||||
|
|
||||||
|
_CHECK() {
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
if [[ ! -e "nowip_hosts.txt" ]]; then
|
||||||
|
echo -e "该脚本的作用为 CloudflareST 测速后获取最快 IP 并替换 Hosts 中的 Cloudflare CDN IP。\n使用前请先阅读:https://github.com/XIU2/CloudflareSpeedTest/issues/42#issuecomment-768273848"
|
||||||
|
echo -e "第一次使用,请先将 Hosts 中所有 Cloudflare CDN IP 统一改为一个 IP。"
|
||||||
|
read -e -p "输入该 Cloudflare CDN IP 并回车(后续不再需要该步骤):" NOWIP
|
||||||
|
if [[ ! -z "${NOWIP}" ]]; then
|
||||||
|
echo ${NOWIP} > nowip_hosts.txt
|
||||||
|
break
|
||||||
|
else
|
||||||
|
echo "该 IP 不能是空!"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
_UPDATE() {
|
||||||
|
echo -e "开始测速..."
|
||||||
|
NOWIP=$(head -1 nowip_hosts.txt)
|
||||||
|
|
||||||
|
# 这里可以自己添加、修改 CloudflareST 的运行参数
|
||||||
|
./CloudflareST -o "result_hosts.txt"
|
||||||
|
|
||||||
|
# 如果需要 "找不到满足条件的 IP 就一直循环测速下去",那么可以将下面的两个 exit 0 改为 _UPDATE 即可
|
||||||
|
[[ ! -e "result_hosts.txt" ]] && echo "CloudflareST 测速结果 IP 数量为 0,跳过下面步骤..." && exit 0
|
||||||
|
|
||||||
|
# 下面这行代码是 "找不到满足条件的 IP 就一直循环测速下去" 才需要的代码
|
||||||
|
# 考虑到当指定了下载速度下限,但一个满足全部条件的 IP 都没找到时,CloudflareST 就会输出所有 IP 结果
|
||||||
|
# 因此当你指定 -sl 参数时,需要移除下面这段代码开头的 # 井号注释符,来做文件行数判断(比如下载测速数量:10 个,那么下面的值就设在为 11)
|
||||||
|
#[[ $(cat result_hosts.txt|wc -l) > 11 ]] && echo "CloudflareST 测速结果没有找到一个完全满足条件的 IP,重新测速..." && _UPDATE
|
||||||
|
|
||||||
|
|
||||||
|
BESTIP=$(sed -n "2,1p" result_hosts.txt | awk -F, '{print $1}')
|
||||||
|
if [[ -z "${BESTIP}" ]]; then
|
||||||
|
echo "CloudflareST 测速结果 IP 数量为 0,跳过下面步骤..."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echo ${BESTIP} > nowip_hosts.txt
|
||||||
|
echo -e "\n旧 IP 为 ${NOWIP}\n新 IP 为 ${BESTIP}\n"
|
||||||
|
|
||||||
|
echo "开始备份 Hosts 文件(hosts_backup)..."
|
||||||
|
\cp -f /etc/hosts /etc/hosts_backup
|
||||||
|
|
||||||
|
echo -e "开始替换..."
|
||||||
|
sed -i 's/'${NOWIP}'/'${BESTIP}'/g' /etc/hosts
|
||||||
|
echo -e "完成..."
|
||||||
|
}
|
||||||
|
|
||||||
|
_CHECK
|
||||||
|
_UPDATE
|
|
@ -0,0 +1,63 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
|
||||||
|
export PATH
|
||||||
|
# --------------------------------------------------------------
|
||||||
|
# 项目: CloudflareSpeedTest 自动更新 Hosts
|
||||||
|
# 版本: 1.0.4
|
||||||
|
# 作者: XIU2
|
||||||
|
# 项目: https://github.com/XIU2/CloudflareSpeedTest
|
||||||
|
# --------------------------------------------------------------
|
||||||
|
|
||||||
|
_CHECK() {
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
if [[ ! -e "nowip_hosts.txt" ]]; then
|
||||||
|
echo -e "该脚本的作用为 CloudflareST 测速后获取最快 IP 并替换 Hosts 中的 Cloudflare CDN IP。\n使用前请先阅读:https://github.com/XIU2/CloudflareSpeedTest/issues/42#issuecomment-768273848"
|
||||||
|
echo -e "第一次使用,请先将 Hosts 中所有 Cloudflare CDN IP 统一改为一个 IP。"
|
||||||
|
read -e -p "输入该 Cloudflare CDN IP 并回车(后续不再需要该步骤):" NOWIP
|
||||||
|
if [[ ! -z "${NOWIP}" ]]; then
|
||||||
|
echo ${NOWIP} > nowip_hosts.txt
|
||||||
|
break
|
||||||
|
else
|
||||||
|
echo "该 IP 不能是空!"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
_UPDATE() {
|
||||||
|
echo -e "开始测速..."
|
||||||
|
NOWIP=$(head -1 nowip_hosts.txt)
|
||||||
|
|
||||||
|
# 这里可以自己添加、修改 CloudflareST 的运行参数
|
||||||
|
./CloudflareST -o "result_hosts.txt"
|
||||||
|
|
||||||
|
# 如果需要 "找不到满足条件的 IP 就一直循环测速下去",那么可以将下面的两个 exit 0 改为 _UPDATE 即可
|
||||||
|
[[ ! -e "result_hosts.txt" ]] && echo "CloudflareST 测速结果 IP 数量为 0,跳过下面步骤..." && exit 0
|
||||||
|
|
||||||
|
# 下面这行代码是 "找不到满足条件的 IP 就一直循环测速下去" 才需要的代码
|
||||||
|
# 考虑到当指定了下载速度下限,但一个满足全部条件的 IP 都没找到时,CloudflareST 就会输出所有 IP 结果
|
||||||
|
# 因此当你指定 -sl 参数时,需要移除下面这段代码开头的 # 井号注释符,来做文件行数判断(比如下载测速数量:10 个,那么下面的值就设在为 11)
|
||||||
|
#[[ $(cat result_hosts.txt|wc -l) > 11 ]] && echo "CloudflareST 测速结果没有找到一个完全满足条件的 IP,重新测速..." && _UPDATE
|
||||||
|
|
||||||
|
|
||||||
|
BESTIP=$(sed -n "2,1p" result_hosts.txt | awk -F, '{print $1}')
|
||||||
|
if [[ -z "${BESTIP}" ]]; then
|
||||||
|
echo "CloudflareST 测速结果 IP 数量为 0,跳过下面步骤..."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echo ${BESTIP} > nowip_hosts.txt
|
||||||
|
echo -e "\n旧 IP 为 ${NOWIP}\n新 IP 为 ${BESTIP}\n"
|
||||||
|
|
||||||
|
echo "开始备份 Hosts 文件(hosts_backup)..."
|
||||||
|
\cp -f /etc/hosts /etc/hosts_backup
|
||||||
|
|
||||||
|
echo -e "开始替换..."
|
||||||
|
sed -i '' 's/'${NOWIP}'/'${BESTIP}'/g' /etc/hosts
|
||||||
|
echo -e "完成..."
|
||||||
|
}
|
||||||
|
|
||||||
|
_CHECK
|
||||||
|
_UPDATE
|
Loading…
Reference in New Issue