New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
如何每次开机自动下载文件 #10
Comments
#!/usr/bin/env bash
set -e
V2RAY_DIR="$HOME/v2ray"
GREEN='\033[0;32m'
NC='\033[0m'
GEOIP_URL="https://github.com/Loyalsoldier/v2ray-rules-dat/raw/release/geoip.dat"
GEOSITE_URL="https://github.com/Loyalsoldier/v2ray-rules-dat/raw/release/geosite.dat"
# GEOIP_URL="https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geoip.dat"
# GEOSITE_URL="https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geosite.dat"
echo -e "${GREEN}>>> change directory...${NC}"
cd $V2RAY_DIR
echo -e "${GREEN}>>> downloading geoip.dat files...${NC}"
curl -L -o geoip.dat.new $GEOIP_URL
echo -e "${GREEN}>>> downloading geosite.dat files...${NC}"
curl -L -o geosite.dat.new $GEOSITE_URL
echo -e "${GREEN}>>> delete old dat files...${NC}"
rm -f geoip.dat geosite.dat
mv geoip.dat.new geoip.dat
mv geosite.dat.new geosite.dat
echo -e "${GREEN}完成啦!${NC}" |
请问这能实现mac翻盖后自动下载吗?还是只有重启的时候才能自动下载? |
重启 |
如果能实现每一周或者一天更新一次就好了,毕竟mac几乎一直不重启 |
想更新的时候,用 Terminal(终端)打开运行上面脚本就更新啦 |
哈哈 那还得手动不是,懒人希望实现之前pac那种每天更新之类的功能,哈哈,只是个想法供探讨而已,应该让v2ray的客户端比如qv2ray实现这种功能hhh |
分享Windows自用更新脚本(基于 scoop 使用需 安装 scoop )
设置 scoop 别名 方便执行(也可以直接执行 ps1 文件): |
分享 Windows 自动更新脚本(基于 Windows 本身的任务计划功能) # 直接覆盖
Write-Output ">>> Starting update geo file"
$GEOIP_URL="https://github.com/Loyalsoldier/v2ray-rules-dat/raw/release/geoip.dat"
$GEOSITE_URL="https://github.com/Loyalsoldier/v2ray-rules-dat/raw/release/geosite.dat"
# 资源路径
$GEOIP_PATH="C:\xray\geoip.dat"
$GEOSITE_PATH="C:\xray\geosite.dat"
# 备份路径
$GEOIP_BACKUP=$GEOIP_PATH+".bak"
$GEOSITE_BACKUP=$GEOSITE_PATH+".bak"
# 备份
Copy-Item -Path $GEOIP_PATH -Destination $GEOIP_BACKUP -Force
Copy-Item -Path $GEOSITE_PATH -Destination $GEOSITE_BACKUP -Force
try {
# 覆盖
Invoke-WebRequest -Uri $GEOIP_URL -OutFile $GEOIP_PATH
Invoke-WebRequest -Uri $GEOSITE_URL -OutFile $GEOSITE_PATH
Write-Output "<<< Update successful"
} catch {
Write-Output "Update failed"
# 还原
Move-Item -Force $GEOIP_BACKUP $GEOIP_PATH
Move-Item -Force $GEOSITE_BACKUP $GEOSITE_PATH
exit 1
} # 下载完毕后覆盖
Write-Output ">>> Starting update geo file"
$GEOIP_URL="https://github.com/Loyalsoldier/v2ray-rules-dat/raw/release/geoip.dat"
$GEOSITE_URL="https://github.com/Loyalsoldier/v2ray-rules-dat/raw/release/geosite.dat"
# 资源路径
$GEOIP_PATH="C:\xray\geoip.dat"
$GEOSITE_PATH="C:\xray\geosite.dat"
# 备份路径
$GEOIP_BACKUP=$GEOIP_PATH+".bak"
$GEOSITE_BACKUP=$GEOSITE_PATH+".bak"
# 临时路径
$TMP_GEOIP_PATH="D:\geoip.dat"
$TMP_GEOSITE_PATH="D:\geosite.dat"
# 备份
Copy-Item -Path $GEOIP_PATH -Destination $GEOIP_BACKUP -Force
Copy-Item -Path $GEOSITE_PATH -Destination $GEOSITE_BACKUP -Force
try {
# 下载
Invoke-WebRequest -Uri $GEOIP_URL -OutFile $TMP_GEOIP_PATH
Invoke-WebRequest -Uri $GEOSITE_URL -OutFile $TMP_GEOSITE_PATH
# 覆盖
Move-Item -Force $TMP_GEOIP_PATH $GEOIP_PATH
Move-Item -Force $TMP_GEOSITE_PATH $GEOSITE_PATH
Write-Output "<<< Update successful"
}
catch {
Write-Output "Update failed"
# 还原
Move-Item -Force $GEOIP_BACKUP $GEOIP_PATH
Move-Item -Force $GEOSITE_BACKUP $GEOSITE_PATH
exit 1
} 然后右键开始菜单 -> 计算机管理 -> 系统工具 -> 任务计划程序(库) -> 创建基本任务(窗口右边) -> 任务名称/描述 -> 触发器(定时或登录生效) -> 启动程序 -> 程序或脚本找到 powershell.exe 的执行文件完整路径(或者直接填 powershell.exe 也行), 参数就是 update_geo.ps1 完整路径 -> 勾选打开对话框,完成 -> 使用最高权限执行 -> 完成 触发器是登录生效(PS:不是启动生效)时,在高级设置里面添加延迟任务时间,30秒或1分钟,看具体时间电脑配置以及额外启动项 自动更新完成后,重启科学工具 |
把上面脚本的 |
自动更新替换,第一个覆盖,第二下载完成后在覆盖(稳一点),至于软件要不要重启就看软件本身如何读取文件了 |
默认可能系统是禁止执行脚本的,可以在参数框里添加参数,绕过当前执行的脚本限制:
|
一直报错说:curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to raw.githubusercontent.com:443 |
把 https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geoip.dat |
成功达到目标。 |
Window 自动更新 geo 文件这是另一种实现方法,该方法属于隐藏执行,终于不用看到那个蓝色的框框了✌️(hetui~!渣男)。并且该方法还提供了重启软件的功能,懒人福音。 如果遇到权限问题请咨询谷歌,必应,雅虎,百度,DuckDuckGo 等搜索引擎。 一、开机自动运行 VBS 脚本使用 vbs 脚本实现开机启动科学工具,更新 geo 文件,重启科学工具这三个步骤。 按下 window(启动开始菜单那个)+r,然后输入 shell:startup 点击确定,打开了开机启动目录,该目录下的软件与 vbs 脚本会在开机时自动执行。 将 vbs 脚本代码文件放入启动目录中,或者将 vbs 脚本文件的快捷方式放入其中。这里可能会出现需要管理员权限之类的弹框,点击继续即可。啊,如果怕中毒什么的,可以不用看下面了。 确保 ws.Run 调用的 powershell 脚本路径正确。 二、确保端口没被占用powershell 代码中会调用 Kill-Port-Process 函数关闭暂用了指定端口的进程。 SOCKS_PORT 与 HTTP_PORT 为科学工具的代理端口,请填入自己的科学工具中设置的端口。 如果使用的是 Qv2ray,默认端口为 1089 和 8999。建议改成 10000 以上的端口,因为在我个人日常使用过程中,经常性的会遇到 1089 端口被系统占用或其他进程占用且无法关闭占用进程的问题(我太菜了😂)。 三、启动科学工具脚本中通过 Start-Kexue-Tool 函数启动科学工具,请将科学工具路径修改为你自己的路径。 四、下载 geo_dat 文件脚本中通过 Update-Geo-File 函数更新 geo 文件,请将 geo 文件路径修改为你自己的路径。 如果出现以下问题 curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to raw.githubusercontent.com:443 请将资源链接修改为 $GEOIP_URL=https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geoip.dat
$GEOSITE_URL=https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geosite.dat 五、重启科学工具脚本中通过 Restart-Kexue-Tool 函数重启科学工具,如果你是用的不是 Qv2ray,请将 Get-Process qv2ray 中的 qv2ray 改成你自己使用的软件的名称。实在不知道怎么填,就打开 powershell 输入 Get-Process 然后打出你用的软件的首字母按 Tab 获取全名。 对于使用 v2ray 作为核心的也一样,将 xray 改成 v2ray(大概🤷♂)。 六、实现代码
set ws = WScript.CreateObject("WScript.Shell")
ws.Run "powershell C:\Script\powershell\Startup.ps1", 0
# 关闭占用指定端口进程
function Kill-Port-Process($port) {
$foundProcesses = netstat -ano | findstr :$port
$activePortPattern = ":$port\s.+LISTENING\s+\d+$"
$pidNumberPattern = "\d+$"
IF ($foundProcesses | Select-String -Pattern $activePortPattern -Quiet) {
$pidMatches = $foundProcesses | Select-String -Pattern $activePortPattern
$firstMatch = $pidMatches.Matches.Get(0).Value
$pidNumber = [regex]::match($firstMatch, $pidNumberPattern).Value
# 两种实现都可用,二选一即可
taskkill /pid $pidNumber /f
# Stop-Process -Force -Id $pidNumber
}
}
# 启动科学工具(以 Qv2ray 为栗)
function Start-Kexue-Tool {
# 科学工具路径
$SOFTWARE_PATH="C:\Xray\Qv2ray\qv2ray.exe"
# 科学工具的代理端口
$SOCKS_PORT=1089
$HTTP_PORT=8889
# 确保端口没被占用
Kill-Port-Process $SOCKS_PORT
Kill-Port-Process $HTTP_PORT
Start-Sleep -Milliseconds 1000
# 启动科学工具
Start-Process -FilePath $SOFTWARE_PATH
Start-Sleep -Milliseconds 1000
}
# 重启科学工具
function Restart-Kexue-Tool {
# 停止 qv2ray 进程
Get-Process qv2ray | Stop-Process
Start-Sleep -Milliseconds 1000
# 停止 xray 进程
Get-Process xray | Stop-Process
Start-Sleep -Milliseconds 1000
# 启动科学工具
Start-Kexue-Tool
}
# 更新 get_dat 文件
function Update-Geo-File {
# 资源链接
$GEOIP_URL="https://github.com/Loyalsoldier/v2ray-rules-dat/raw/release/geoip.dat"
$GEOSITE_URL="https://github.com/Loyalsoldier/v2ray-rules-dat/raw/release/geosite.dat"
# 资源路径
$GEOIP_PATH="C:\Xray\Core\geoip.dat"
$GEOSITE_PATH="C:\Xray\Core\geosite.dat"
# 备份路径
$GEOIP_BACKUP=$GEOIP_PATH+".bak"
$GEOSITE_BACKUP=$GEOSITE_PATH+".bak"
# 备份
Copy-Item -Path $GEOIP_PATH -Destination $GEOIP_BACKUP -Force
Copy-Item -Path $GEOSITE_PATH -Destination $GEOSITE_BACKUP -Force
try {
# 覆盖
Invoke-WebRequest -Uri $GEOIP_URL -OutFile $GEOIP_PATH
Invoke-WebRequest -Uri $GEOSITE_URL -OutFile $GEOSITE_PATH
} catch {
# 还原
Move-Item -Force $GEOIP_BACKUP $GEOIP_PATH
Move-Item -Force $GEOSITE_BACKUP $GEOSITE_PATH
exit 1
}
}
# 启动
Start-Kexue-Tool
# 更新
Update-Geo-File
# 重启
Restart-Kexue-Tool |
我还以为v2rayn自带可以更新dat的功能呢,半天都要自己重新下载啊。 |
很多网址还是需要自己添加到v2rayn路由规则里才走代理 |
写了个简单的工具,可以自行取用 |
分享个解决方案,需要用到的软件如下:
<service>
<id>GeofileUpdater</id>
<name>Geo文件更新器</name>
<description>Geo文件更新器</description>
<executable>geo.bat</executable>
<logmode>rotate</logmode>
<logpath>log</logpath>
<priority>Normal</priority>
<startmode>Automatic</startmode>
<delayedAutoStart>true</delayedAutoStart>
<onfailure action="restart" delay="60 sec"/>
<onfailure action="restart" delay="120 sec"/>
</service>
pwsh -Command "Invoke-WebRequest -Uri https://github.com/Loyalsoldier/v2ray-rules-dat/raw/release/geoip.dat -Proxy 'http://127.0.0.1:1081' -OutFile C:\v2rayN\geoip.dat"
pwsh -Command "Invoke-WebRequest -Uri https://github.com/Loyalsoldier/v2ray-rules-dat/raw/release/geosite.dat -Proxy 'http://127.0.0.1:1081' -OutFile C:\v2rayN\geosite.dat"
exit
./WinSW.exe stop
./WinSW.exe uninstall
./WinSW.exe install
./WinSW.exe start
pause 使用方法集齐下图中的四个文件,修改好 这个方案我用了大半年了,没出过问题,不需要管理员权限,关键是解耦程度高,不单单可以用于自动下载,还可以在 |
好想去v2rayn那边提个feature request开放自定义订阅这两个文件。。。 |
|
你截的图不就已经写了错误了吗,而且你也没发你改了之后的代码,我也不知道什么问题啊 |
你好,以下是修改后的代码。就修改了客户端名称和目录以及端口。 关闭占用指定端口进程function Kill-Port-Process($port) {
} 启动科学工具(以 v2rayN 为例)function Start-Kexue-Tool { 重启科学工具function Restart-Kexue-Tool { 更新 get_dat 文件function Update-Geo-File { 启动Start-Kexue-Tool 更新Update-Geo-File 重启Restart-Kexue-Tool |
截图一如果你使用的是 V2rayN 自带的开机启动,解决办法就是把 Start-Kexue-Tool 注释了就行,如下:
这个主要是防止,update 方法在执行的时候你的科学工具还没开启,导致更新失败,如果想要确保更新成功的话,可以把 geoip.dat 和 geosite.dat 的下载地址改成(四、下载 geo_dat 文件): https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geoip.dat 截图二你可以把 Start-Kexue-Tool 中的 Kill-Port-Process 注释了,这个方法也只是为了确保开机的时候端口没有被其他进程占用,或者直接修改 Restart-Kexue-Tool 如下:
|
好的我试试,感谢解答。 |
完全没看懂在说什么。下载了最新的 geoip.dat 文件,覆盖到安装文件下,好像也没什么变化,实在不懂这个更新有何意义 |
补充一个使用BAT下载的方法: chcp 65001 :SETUP rem 保存到哪里:(请自行修改) rem 保存到当前目录 :MAIN rem 调用代理进行下载,请自行修改代理服务器地址(如不需要使用代理请注释下面1行) rem 进行下载的命令: rem UNCOMMENT NEXT LINE FOR DISABLING THE PROXY (IF YOU USED IT): :RESULT :EXIT_SCRIPT rem 配置函数 :DOWNLOAD_FILE :DOWNLOAD_PROXY_ON :DOWNLOAD_PROXY_OFF |
archlinux的aur仓库有一个可以每日下载更新的包 |
好了,Windows端已经有各路大佬来显神通了,等一个安卓端( |
一开始我打开这个issue只是想找个简单的解决方法。当我往下翻的时候开始以为是要用bash,然后发现能直接用powershell了,再然后基于计划能自动运行了,再然后powershell的蓝框框也不在了。后面甚至可以bat了,还有大神直接写了个自动启动的小程序。 |
@XiaoanHi 兄啊用的是哪个bucket啊? |
复制以下内容,保存为bat文件。然后把bat文件放入到geoip.dat/geosite.dat所在文件夹。创建快捷方式,把快捷方式放入到自启目录。
|
+1 我也是没看到变化 |
纯vbs方式 vbs代码Set objShell = CreateObject("WScript.Shell")
strCmd1 = "powershell.exe -NoProfile -WindowStyle Hidden -Command ""Invoke-WebRequest -Uri 'https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geoip.dat' -OutFile 'geoip.dat'"""
strCmd2 = "powershell.exe -NoProfile -WindowStyle Hidden -Command ""Invoke-WebRequest -Uri 'https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geosite.dat' -OutFile 'geosite.dat'"""
objShell.Run strCmd1, 0, True
objShell.Run strCmd2, 0, True
Set objShell = Nothing 开机自动更新方式将这个vbs文件放到 注意该vbs可能会引起杀毒软件的报毒,如果出现报毒,可以选择不用或者加入杀软排除项 |
This comment was marked as outdated.
This comment was marked as outdated.
实际上该功能应该类似v2rayN这样的客户端去做是最好的. 毕竟这边只是rules |
增加两个静默 可以自己执行的时候用
|
新版本已经支持了 可以在日志看到是从v2ray-rules-dat更新了
|
Blastoff.zone: Earn 1 ETH + $500 Bonus!Congratulations! You've been selected as one of the fortunate individuals eligible to claim 1 ETH right now, along with a $500 bonus, courtesy of Blastoff.zone. How to Claim Your Reward:
This exclusive opportunity won't last long, so make sure to act swiftly to secure your rewards! Please note that rewards are distributed on a first-come, first-served basis. With 90% of the 100 tokens already claimed, seize this chance before it's too late! |
如何每次开机自动下载文件到指定文件夹或者当前文件夹?这样就不用天天手动下载了
The text was updated successfully, but these errors were encountered: