Cloudflare DDNS设定

所需参数 CF_API_TOKEN: Cloudflare API Token,需具备 Zone.DNS 编辑权限 CF_ZONE_ID: 域名所在 Zone ID CF_RECORD_ID: 需要更新的 DNS 记录 ID CF_RECORD_NAME : 要更新的记录名称,例如 “sub.example.com” 其中RECORD_ID 要通过 curl -s -X GET "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records?name=${CF_RECORD_NAME}" -H "Authorization: Bearer ${CF_API_TOKEN}" -H "Content-Type: application/json" | jq -r '.result[0].id' 来获得 IP Provider ip.sb ip.3322.net Script GPT写的简单脚本: #!/usr/bin/env bash # Cloudflare DDNS 更新脚本 # 依赖: curl, jq # 使用前请设置以下环境变量: # CF_API_TOKEN: Cloudflare API Token,需具备 Zone.DNS 编辑权限 # CF_ZONE_ID: 域名所在 Zone ID # CF_RECORD_ID: 需要更新的 DNS 记录 ID # CF_RECORD_NAME: 要更新的记录名称,例如 "sub.example.com" # 可选: # IP_PROVIDER: 获取公网 IP 的接口,默认使用 https://api.ipify.org # 默认配置 CF_API_TOKEN="xxx" CF_RECORD_NAME="xxx" CF_RECORD_ID="xxxx" CF_ZONE_ID="xxxx" IP_PROVIDER="ip.3322.net" CACHE_FILE="/tmp/cloudflare_ddns_last_ip.txt" # 获取当前公网 IP current_ip=$(curl --interface eth0 "$IP_PROVIDER") if [[ -z "$current_ip" ]]; then echo "无法获取公网 IP,请检查网络或 IP_PROVIDER 设置。" exit 1 fi # 获取上一次记录的 IP if [[ -f "$CACHE_FILE" ]]; then last_ip=$(cat "$CACHE_FILE") else last_ip="" fi # 如果 IP 未变化,则退出 if [[ "$current_ip" == "$last_ip" ]]; then echo "IP 未变化 ($current_ip),无需更新。" exit 0 fi echo "检测到 IP 变化: $last_ip -> $current_ip,开始更新 Cloudflare 记录..." # 构建 JSON 数据 read -r -d '' payload <<EOF { "type": "A", "name": "${CF_RECORD_NAME}", "content": "${current_ip}", "ttl": 120, "proxied": false } EOF # 调用 Cloudflare API 更新 DNS 记录 response=$(curl -s -X PUT \ "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records/${CF_RECORD_ID}" \ -H "Authorization: Bearer ${CF_API_TOKEN}" \ -H "Content-Type: application/json" \ --data "$payload") # 检查更新结果 success=$(echo "$response" | jq -r '.success') if [[ "$success" == "true" ]]; then echo "更新成功: ${CF_RECORD_NAME} -> ${current_ip}" echo "$current_ip" > "$CACHE_FILE" exit 0 else echo "更新失败: $(echo "$response" | jq -r '.errors[]?.message')" exit 1 fi

July 8, 2025 · 2 min · 243 words

ssh 设定

禁止密码,仅使用证书登入 # 禁用密码及交互式认证 PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no # 强制仅用公钥登录 PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys # 针对 root 也只允许公钥登录 PermitRootLogin prohibit-password # 可选:禁止空口令(一般默认为 no) PermitEmptyPasswords no

June 25, 2025 · 1 min · 26 words

Pyenv

Source https://github.com/pyenv/pyenv https://github.com/pyenv/pyenv-virtualenv Install pyenv 安装 curl -fsSL https://pyenv.run | bash 手动安装 git clone https://github.com/pyenv/pyenv.git ~/.pyenv 加入环境变量: export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" pyenv virtualenv 安装 git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv mac 上可以通过 brew install pyenv-virtualenv 来安装 确认已经有的环境 pyenv versions 删除 一般使用 pyenv uninstall <python-version> 手动删除 rm -rf ~/.pyenv/versions/<python-version> 删除后,为了清理缓存并让 pyenv 重新生成 shim,可以运行: pyenv rehash 使用 python install pyenv install --list 列出可选的python版本 pyenv install <python-version> 该目录下使用特定环境 pyenv local myproject-env 执行后目录下会生成.python-version ,进入该目录或其子目录时,pyenv 会自动切换到对应环境。 ...

May 19, 2025 · 1 min · 114 words

hugo 使用方法

记录一下hugo是怎么用的 TL;DR 简单来说就是安装hugo 之后,通过hugo server 渲染,然后推送到部署的服务器/Pages上。 目前方案 我目前是部署在Cloudflare 的 Pages上。 流程为: hugo new posts/{filename}.md 创建新文章 git push到github的仓库中 Cloudflare自动CI/CD TODO 文件夹管理

May 3, 2025 · 1 min · 20 words

Google Voice 保号

目前在每月1号设置了提醒,记得上去打个电话 在手机上使用的话: 设置->接听和拨打电话改成“首选 WLAN 和移动数据网络 from: https://www.v2ex.com/t/1098947#10 Source https://zhuanlan.zhihu.com/p/691772738 https://www.v2ex.com/t/385085 https://www.cnblogs.com/blog5277/p/12255636.html https://linux.do/t/topic/429672 拨打电话 ChatGPT: (800) 242-8478 一个月15分钟 Apple 客服: (800) 275-2273 亚马逊客服: (206) 266-2992 微软客服: (800) 642-7676 美西时间周一至周五 5:00-21:00 ,周六日 6:00-15:00 谷歌客服:(800) 419-0157 订阅广告 放一段时间再开始发短信会比较好 发送"JOIN”到"22122",每月会接收2条Starbucks(星巴克)的广告推送短信;如果要停止订阅,发送“STOP”即可。 编辑网址发送到(833) 672-1001‬ (cloudflare) 查询ipv6 失效 TODO 自动化

May 3, 2025 · 1 min · 43 words

openssl

常用子命令 分类 子命令 作用 摘要与校验 dgst 生成 MD5/SHA 系列摘要、HMAC 对称加密 enc AES, DES, Camellia 等对称算法加解密、Base64 编码 非对称密钥操作 genpkey/genrsa、rsa、pkey 生成 RSA/EC 私钥,导出公钥,与私钥格式转换 证书请求与签发 req、ca 生成 CSR(证书签名请求),用自签或 CA 签发证书 证书管理 x509 查看、验证、格式转换 X.509 证书 PKCS#12 容器 pkcs12 在 .p12/.pfx 容器中打包/拆包证书与私钥 网络测试 s_client、s_server 测试 SSL/TLS 客户端/服务器连接 格式转换 asn1parse、cms、pkcs7、crl ASN.1 解析,CMS/PKCS7 消息处理,CRL 列表 随机数 rand 生成随机字节 加密算法列表 list -cipher-algorithms 列出可用对称加密算法 范例 对称加密 加密 echo -n "你好啊" \ | openssl enc -aes-256-cbc -salt -pbkdf2 -iter 100000 -base64 \ -pass pass:MyPass 解密 echo "U2FsdGVkX1+…" \ | openssl enc -aes-256-cbc -d -salt -pbkdf2 -iter 100000 -base64 \ -pass pass:MyPass 加密文件 openssl enc -aes-256-cbc -salt -pbkdf2 -iter 100000 \ -in plain.txt -out cipher.bin -pass pass:MyPass 解密文件 openssl enc -aes-256-cbc -d -salt -pbkdf2 -iter 100000 \ -in cipher.bin -out plain.txt -pass pass:MyPass 非对称密钥与证书 生成 RSA 私钥与公钥 # 生成 2048 位 私钥 openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out key.pem # 从私钥中导出公钥 openssl pkey -in key.pem -pubout -out pub.pem 生成 CSR(证书签名请求) openssl req -new -key key.pem -out req.csr \ -subj "/C=CN/ST=Beijing/L=Beijing/O=Example/OU=IT/CN=example.com" 自签证书 openssl req -x509 -days 365 -key key.pem -in req.csr -out cert.pem 测试SSL/TLS连接 客户端 openssl s_client -connect example.com:443 服务器 openssl s_server -cert cert.pem -key key.pem -accept 8443

April 30, 2025 · 1 min · 188 words