爱墨迹 - v2raya
type: channel
link: https://imgki.com/tag/v2raya/
items: V2rayA定时自动更新GeoIP和GeoSite|同步推送Vocechat消息

V2rayA定时自动更新GeoIP和GeoSite|同步推送Vocechat消息
type: item
date: 2024-10-14T19:10:00+08:00
description: 背景这几天折腾了一下透明代理，一直用V2rayA是比较稳定的，后来我把自己的旁路由都给撤了，全家的网络加速基本就是依靠透明代理，也非常的稳定。而且是自己定义了RoutingA路由，但是V2ray不能自动更新geoip和geosite，我一直用Loyalsoldier/v2ray-rules-dat这个项目。花10min写了一段脚本每天更新脚本，并将更新结果推送到vocechat。过程编辑update_geo.sh文件，主要修改URL地址以及存放本地deoip.dat的路径#!/bin/bash # 设置变量 GEOIP_URL="https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat" GEOSITE_URL="https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat" LOCAL_GEOIP_PATH="/usr/share/v2ray/geoip.dat" # 请替换为您的本地 geoip.dat 文件路径 LOCAL_GEOSITE_PATH="/usr/share/v2ray/geosite.dat" # 请替换为您的本地 geosite.dat 文件路径 LOG_FILE="/root/update_geo/update_geo_files.log" # 请替换为您想要保存日志的路径 # 更新函数 update_geo_file() { local url=$1 local local_path=$2 local file_name=$(basename "$local_path") echo "$(date): 开始更新 $file_name" >> "$LOG_FILE" if curl -L -o "$local_path" "$url"; then echo "$(date): 成功更新 $file_name" >> "$LOG_FILE" else echo "$(date): 更新 $file_name 失败" >> "$LOG_FILE" fi } # 执行更新 update_geo_file "$GEOIP_URL" "$LOCAL_GEOIP_PATH" update_geo_file "$GEOSITE_URL" "$LOCAL_GEOSITE_PATH" 给脚本添加权限，并设置每天定时更新。# 添加执行权限 chmod +x update_geo.sh # 添加到 crontab 以实现每天自动更新 # 请在终端中运行 'crontab -e' 并添加以下行： 0 2 * * * /root/update_geo/update_geo.sh echo "脚本已执行完毕。请确保将其添加到 crontab 中以实现每天自动更新。"更新完成后同步发通知到自己的vocechat#!/bin/bash # 设置变量 GEOIP_URL="https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat" GEOSITE_URL="https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat" LOCAL_GEOIP_PATH="/usr/share/v2ray/geoip.dat" # 请替换为您的本地 geoip.dat 文件路径 LOCAL_GEOSITE_PATH="/usr/share/v2ray/geosite.dat" # 请替换为您的本地 geosite.dat 文件路径 LOG_FILE="/root/update_geo/update_geo_files.log" # 请替换为您想要保存日志的路径 # API 地址 API_URL="/api/bot/send_to_group/2" # API 密钥 API_KEY="" # 更新函数 update_geo_file() { local url="$1" local local_path="$2" local file_name=$(basename "$local_path") echo "$(date): 开始更新 $file_name" >> "$LOG_FILE" if curl -L -o "$local_path" "$url"; then echo "$(date): 成功更新 $file_name"…