Maktub_Wiki Maktub_Wiki
主站 (opens new window)
  • 服务搭建
  • 网络服务
  • 开源框架
  • 操作系统
  • iOS/MacOS
  • 算法导论(Python)
  • Leetcode
  • 线性代数
主站 (opens new window)
  • 服务搭建
  • 网络服务
  • 开源框架
  • 操作系统
  • iOS/MacOS
  • 算法导论(Python)
  • Leetcode
  • 线性代数
  • 最新部署

    • MoviePilot

      • 基础配置
      • 微信通知
    • Plex

      • 安装
      • 问题修复
    • QBittorrent
    • OneAPI
    • Flare
    • ZerotierOne

      • 自建Planet服务
      • 其他配置
      • Docker环境下Planet离线
    • music_tag_web
    • Rclone多重加密备份
    • Next-Terminal
    • Cloudbeaver
    • Alist
    • Calibre
    • docker迅雷
    • Docker百度网盘
    • home-assistant智能家居中心
    • uptime-kuma服务监控
    • OpenWebUI(openai+联网搜索)
    • CF-DDNS脚本
      • 本地IP拦截
    • 归档

      • Filebrowser
      • ZerotierOne
    • 服务搭建
    • 最新部署
    Maktub_小明
    2023-11-27
    目录

    CF-DDNS脚本

    # 说明

    环境:debian
    通过脚本和定时任务,定时更新ip

    # 脚本

    #!/bin/bash
    
    # 配置
    auth_token="xxxxxx" # 头像(右上角)->我的个人资料-API令牌->创建令牌->编辑dns
    zone_name="example.com" #域名
    record_name="sub.example.com" #子域名
    
    # 文件路径
    ip_file=~/.cf/ip.txt
    id_file=~/.cf/cloudflare.ids
    if [ ! -d ~/.cf ]; then
        echo "创建文件夹"
        mkdir ~/.cf
    fi
    
    # ip判断
    new_ip=$(curl -s https://ipv4.maktub.cn)
    if [ -f $ip_file ]; then
        old_ip=$(cat $ip_file)
        if [ $new_ip == $old_ip ]; then
            echo "IP has not changed."
            exit 0
        fi
    fi
    
    # 获取配置
    if [ -f $id_file ] && [ $(wc -l $id_file | cut -d " " -f 1) == 2 ]; then
        zone_identifier=$(head -1 $id_file)
        record_identifier=$(tail -1 $id_file)
    else
        zone_identifier=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$zone_name" -H "Authorization: Bearer $auth_token" -H "Content-Type: application/json" | grep -Po '(?<="id":")[^"]*' | head -1 )
        record_identifier=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$zone_identifier/dns_records?name=$record_name" -H "Authorization: Bearer $auth_token" -H "Content-Type: application/json"  | grep -Po '(?<="id":")[^"]*')
        echo "$zone_identifier" > $id_file
        echo "$record_identifier" >> $id_file
    fi
    
    # 更新ip
    update=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$zone_identifier/dns_records/$record_identifier" -H "Authorization: Bearer $auth_token" -H "Content-Type: application/json" --data "{\"id\":\"$zone_identifier\",\"type\":\"A\",\"name\":\"$record_name\",\"content\":\"$new_ip\"}")
    
    if [[ $update == *"\"success\":false"* ]]; then
        message="API UPDATE FAILED. DUMPING RESULTS:\n$update"
        echo -e "$message"
        exit 1 
    else
        message="IP changed to: $new_ip"
        echo "$new_ip" > $ip_file
        echo "$message"
    fi
    
    

    # 创建定时任务

    命令行:crontab -e

    # 每分钟执行一次
    * * * * * bash /root/.tool/cf-ddns.sh > /dev/null 2>&1
    
    上次更新: 2025/03/22, 03:52:10
    OpenWebUI(openai+联网搜索)
    本地IP拦截

    ← OpenWebUI(openai+联网搜索) 本地IP拦截→

    Theme by Vdoing | Copyright © 2021-2025 Maktub_小明 | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式