clash在有自定义规则的情况下设置自动更新脚本

背景

因为在clash上加了自定义规则,所以需要设置自动更新脚本,防止覆盖,电脑为mac

代码

废话少说,上代码!要注意的点是你添加的规则要在rules的靠前的位置,否则很可能被覆盖。

#!/bin/bash
#chmod +x update_clash_custom.sh脚本使用方法
# === 用户自定义设置 ===
BASE_FILE="你的配置文件名.yaml"
FINAL_FILE="final_config.yaml"
MERGE_SCRIPT="append_custom_clash.py"

#进入工作目录,虽然我的sh脚本已经放在工作目录下了
cd "$WORKDIR" || exit 1

# 已有 base.yaml,直接使用,不行通过订阅url爬
if [ ! -f "$BASE_FILE" ]; then
    echo "[!] 未找到 base.yaml,请手动放入 $WORKDIR 目录下"
    exit 1
else
    echo "[+] 找到本地 base.yaml,开始合并配置"
fi

# 写入合并脚本
cat > "$MERGE_SCRIPT" <<EOF
import yaml

# 加载原始配置
def load_yaml(file):
    with open(file, 'r', encoding='utf-8') as f:
        return yaml.safe_load(f)

# 保存修改后配置
def save_yaml(data, file):
    with open(file, 'w', encoding='utf-8') as f:
        yaml.dump(data, f, allow_unicode=True, sort_keys=False, default_flow_style=False)

config = load_yaml("$BASE_FILE")

# === 修改 DNS 部分 ===
dns_block = config.get("dns", {})
nameservers = dns_block.get("nameserver", [])
for ip in [“你的需要添加的dns”]:
    if ip not in nameservers:
        nameservers.insert(0, ip)
dns_block["nameserver"] = nameservers
config["dns"] = dns_block

# === 添加自定义规则 ===
custom_rules = [
    “你的规则”
]
rules = config.get("rules", [])
for rule in custom_rules:
    if rule not in rules:
        rules.append(rule)
config["rules"] = rules

# 保存为最终配置
save_yaml(config, "final_config.yaml")
print("配置已处理完成)
EOF

# 执行合并脚本
python3 "$MERGE_SCRIPT"

echo "完成"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值