OpenClash从入门到精通
微言网心云设备IP更新
- 配置这个文件/etc/hotplug.d/iface/99-lan-ip
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| #!/bin/sh
# 检查动作,如果是关闭接口则跳过 [ "$ACTION" = "ifup" ] || exit 0
# 强制定义环境变量路径 export PATH="/usr/sbin:/usr/bin:/sbin:/bin"
LOG_FILE="/root/ShWrt007.txt" CUR_TIME=$(date "+%Y-%m-%d %H:%M:%S")
# 1. 获取内网 IP (增加对不同接口名称的兼容) # 尝试 br-lan,如果为空则尝试 eth0 LAN_IP=$(ip -4 addr show br-lan | grep "inet " | awk '{print $2}' | cut -d/ -f1) [ -z "$LAN_IP" ] && LAN_IP=$(ip -4 addr show eth0 | grep "inet " | awk '{print $2}' | cut -d/ -f1)
sleep 5
# 2. 获取公网 IP (使用绝对路径,并添加 -L 处理重定向) # 使用 ip.sb 或 cip.cc/ip WAN_IP=$(/usr/bin/curl -s4L --connect-timeout 10 http://ip.sb | tr -d '\r\n' || echo "获取失败")
# 3. 覆盖写入文件 { echo "更新时间: $CUR_TIME" echo "内网 IP: $LAN_IP" echo "公网 IP: $WAN_IP" } > $LOG_FILE
# SEND_KEY="SCT327668TkEBawsz8LU9DJXVA4qstHhfG" # IP_INFO=$(cat /root/ShWrt007.txt) # curl -s -d "title=ShWrt007_IP更新&desp=$IP_INFO" https://sctapi.ftqq.com/$SEND_KEY.send
# ====== GitHub Gist 上传 ====== GIST_ID="019e7946ec2b0c49db38478f4c7378bb" TOKEN="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"
CONTENT=$(cat /root/ShWrt007.txt | sed ':a;N;$!ba;s/\n/\\n/g')
curl -s -X PATCH "https://api.github.com/gists/$GIST_ID" \ -H "Authorization: token $TOKEN" \ -H "Content-Type: application/json" \ -d "{\"files\":{\"ShWrt007.txt\":{\"content\":\"$CONTENT\"}}}"
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| #!/bin/sh
# 等待网络完全就绪 sleep 5
# 检查动作,如果是关闭接口则跳过 # [ "$ACTION" = "ifup" ] || exit 0
# 强制定义环境变量路径 export PATH="/usr/sbin:/usr/bin:/sbin:/bin"
# 配置信息 GIST_ID="019e7946ec2b0c49db38478f4c7378bb" TOKEN="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" FILE="ShWrt007"
# 1. 获取当前更新时间 TIME=$(date "+%Y-%m-%d %H:%M:%S")
# 2. 获取内网 IP (优先 br-lan, 备选 eth0) LAN_IP=$(ip -4 addr show br-lan 2>/dev/null | grep "inet " | awk '{print $2}' | cut -d/ -f1) [ -z "$LAN_IP" ] && LAN_IP=$(ip -4 addr show eth0 2>/dev/null | grep "inet " | awk '{print $2}' | cut -d/ -f1)
# 3. 获取公网 IP WAN_IP=$(curl -s4L --connect-timeout 10 http://ip.sb | tr -d '\r\n') [ -z "$WAN_IP" ] && WAN_IP="获取失败"
# 4. 直接在变量中构造文件内容 (使用 \n 作为换行符) CONTENT="更新时间: $TIME\n内网 IP: $LAN_IP\n公网 IP: $WAN_IP"
# 5. 构造 JSON 并上传 # 使用 printf 组合 JSON,避免 echo 处理反斜杠时的歧义 JSON_PAYLOAD=$(printf '{"files": {"%s": {"content": "%s"}}}' "$FILE" "$CONTENT")
curl -s -X PATCH "https://api.github.com/gists/$GIST_ID" \ -H "Authorization: token $TOKEN" \ -H "Content-Type: application/json" \ -d "$JSON_PAYLOAD" > /dev/null
# (可选) 如果你想在系统日志里看到结果,可以取消下面这一行的注释 logger "Gist IP update triggered at $TIME"
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| #!/bin/sh
# 环境变量 export PATH="/usr/sbin:/usr/bin:/sbin:/bin"
# --- 配置信息 --- TOKEN="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" OWNER="khyxlove" REPO="TvBox" FILE_PATH="ShWrt008" BRANCH="main"
# 1. 获取信息 TIME=$(date "+%Y-%m-%d %H:%M:%S") LAN_IP=$(ip -4 addr show br-lan 2>/dev/null | grep "inet " | awk '{print $2}' | cut -d/ -f1) [ -z "$LAN_IP" ] && LAN_IP=$(ip -4 addr show eth0 2>/dev/null | grep "inet " | awk '{print $2}' | cut -d/ -f1) WAN_IP=$(curl -s --connect-timeout 5 myip.ipip.net/s | tr -d '\r\n') [ -z "$WAN_IP" ] && WAN_IP="获取失败"
# 2. 构造文本内容 RAW_CONTENT="更新时间: $TIME | 内网 IP: $LAN_IP | 公网 IP: $WAN_IP"
# 3. Base64 编码 (针对 OpenWrt 兼容性处理) if command -v base64 >/dev/null 2>&1; then CONTENT_BASE64=$(echo -n "$RAW_CONTENT" | base64 | tr -d '\n') elif command -v openssl >/dev/null 2>&1; then CONTENT_BASE64=$(echo -n "$RAW_CONTENT" | openssl enc -a -A) else # 如果以上都没有,提示错误 echo "错误: 系统缺少 base64 或 openssl 工具,无法编码。" exit 1 fi
# 4. 获取原文件 SHA (增加错误处理) echo "正在获取 SHA..." SHA_RESPONSE=$(curl -sk -H "Authorization: token $TOKEN" \ "https://api.github.com/repos/$OWNER/$REPO/contents/$FILE_PATH?ref=$BRANCH")
SHA=$(echo "$SHA_RESPONSE" | sed -n 's/.*"sha": "\(.*\)".*/\1/p' | head -n 1)
# 如果 SHA 为空,说明可能是第一次创建文件,或者路径不对 if [ -z "$SHA" ]; then echo "警告: 未获取到 SHA (可能是新文件)" SHA_JSON="" else SHA_JSON=",\"sha\":\"$SHA\"" fi
# 5. 上传/更新文件 # 注意:PAYLOAD 内部引号需谨慎处理 PAYLOAD="{\"message\":\"Update IP $TIME\",\"content\":\"$CONTENT_BASE64\"$SHA_JSON,\"branch\":\"$BRANCH\"}"
echo "正在上传到 GitHub..." RESULT=$(curl -X PUT -sk \ -H "Authorization: token $TOKEN" \ -H "Content-Type: application/json" \ -d "$PAYLOAD" \ "https://api.github.com/repos/$OWNER/$REPO/contents/$FILE_PATH")
# 简单判断是否成功 echo "$RESULT" | grep -q "content" && echo "任务执行成功!" || echo "任务可能执行失败,请检查输出。"
echo "任务执行完毕"
|
便宜机场
一分机场,良心云,便宜机场
提供免登录免翻墙的代理软件下载的网盘
- 点开之后,点击文件名,点击下载即可,无需登录 网盘地址
免费VPN
OpenClash从入门到精通
不用懂YAML规则,用ChatGPT搞定所有YAML分流规则:域名站点走国内、走国外,新建独立策略组,完美网络37
公共DNS大全
OpenClash 面板zashboard图标
https://github.com/liandu2024/little/tree/main/zashboard
https://raw.githubusercontent.com/liandu2024/little/refs/heads/main/zashboard/zashboard-20250417.json
科学上网工具Sub-Store部署使用全攻略:管理节点与订阅的最佳方式,自建节点、多机场、多终端用户必看!
自建节点
短链接
网心云OpenWrt 设备信息
- 老家的IP 10.18.0.2 用户名:root 密码:Lt@545818