mirror of
https://github.com/Lsmoisu/sing-box-shell.git
synced 2025-06-08 06:44:13 +08:00
Compare commits
2 Commits
d9375e7c38
...
4445b07092
Author | SHA1 | Date | |
---|---|---|---|
![]() |
4445b07092 | ||
![]() |
e585f7d778 |
24
install.sh
24
install.sh
@ -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
73
upconfig.sh
Normal 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
|
Loading…
x
Reference in New Issue
Block a user