Compare commits

...

2 Commits

Author SHA1 Message Date
Lsmoisu
4445b07092
Update install.sh
添加定时任务  自动更新配置文件重启服务
2025-03-08 20:28:25 +08:00
Lsmoisu
e585f7d778
Add files via upload
自动更新配置脚本
2025-03-08 20:23:55 +08:00
2 changed files with 97 additions and 0 deletions

View File

@ -70,6 +70,30 @@ if ! command -v sing-box > /dev/null 2>&1; then
exit 1
fi
# 设置自动更新配置文件脚本
echo "设置自动更新配置文件脚本..."
UP_CONFIG_URL="https://github.com/Lsmoisu/sing-box-shell/raw/refs/heads/main/upconfig.sh"
if ! wget -O /usr/local/bin/upconfig.sh "$UP_CONFIG_URL"; then
echo "错误:下载 upconfig.sh 失败,请检查网络或 URL 是否有效"
exit 1
fi
# 设置脚本权限
chmod +x /usr/local/bin/upconfig.sh
# 检查脚本是否可执行
if [ ! -x /usr/local/bin/upconfig.sh ]; then
echo "错误upconfig.sh 设置执行权限失败"
exit 1
fi
# 添加 crontab 任务,每分钟执行一次
echo "配置 crontab 自动更新任务..."
(crontab -l 2>/dev/null | grep -v "upconfig.sh"; echo "* * * * * /usr/local/bin/upconfig.sh") | crontab -
if [ $? -ne 0 ]; then
echo "警告crontab 配置失败,请手动检查"
fi
# 获取配置文件 URL
DEFAULT_CONFIG_URL="https://sub.hechunyu.com/config-zz-realip-route"
echo "请输入 sing-box 配置文件 URL直接回车使用默认值:"

73
upconfig.sh Normal file
View File

@ -0,0 +1,73 @@
#!/bin/bash
# 定义变量
REMOTE_URL="https://sub.hechunyu.com/config-66ca38b4bd8d"
LOCAL_CONFIG="/etc/sing-box/config.json"
TEMP_CONFIG="/tmp/sing-box-config.json.new"
LOG_FILE="/var/log/sing-box-config-update.log"
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
# 确保日志目录存在
[ ! -d "/var/log" ] && mkdir -p /var/log
# 函数:记录日志
log() {
echo "[$TIMESTAMP] $1" >> "$LOG_FILE"
}
# 检查必要命令是否存在
if ! command -v curl &> /dev/null; then
log "错误curl 未安装"
exit 1
fi
if ! command -v systemctl &> /dev/null; then
log "错误systemctl 未安装"
exit 1
fi
# 下载远程配置文件到临时文件
if ! curl -s -m 30 "$REMOTE_URL" -o "$TEMP_CONFIG"; then
log "错误:无法下载远程配置文件"
exit 1
fi
# 检查本地配置文件是否存在
if [ ! -f "$LOCAL_CONFIG" ]; then
log "警告:本地配置文件不存在,将使用新配置文件"
mv "$TEMP_CONFIG" "$LOCAL_CONFIG"
if systemctl restart sing-box &> /dev/null; then
log "成功:初始化配置文件并重启 sing-box"
else
log "错误:初始化后重启 sing-box 失败"
fi
exit 0
fi
# 比较配置文件差异
if ! cmp -s "$TEMP_CONFIG" "$LOCAL_CONFIG"; then
# 有差异,替换配置文件并重启服务
if cp "$TEMP_CONFIG" "$LOCAL_CONFIG"; then
# 验证配置文件格式(假设 sing-box 支持 config 检查)
if sing-box check -c "$LOCAL_CONFIG" &> /dev/null; then
if systemctl restart sing-box &> /dev/null; then
log "成功:配置文件已更新并重启 sing-box"
else
log "错误:配置文件更新后重启 sing-box 失败"
# 回滚到旧配置文件
cp "$LOCAL_CONFIG.bak" "$LOCAL_CONFIG" 2>/dev/null
fi
else
log "错误:新配置文件格式无效,不执行更新"
fi
else
log "错误:替换配置文件失败"
fi
else
log "信息:配置文件无变化,跳过更新"
fi
# 清理临时文件
[ -f "$TEMP_CONFIG" ] && rm -f "$TEMP_CONFIG"
exit 0