zoukankan      html  css  js  c++  java
  • Windows PowerShell DNSPOD Script

    自动获取公网 IP,修改 DNSPOD 上的记录值。

    接口地址:

    • https://dnsapi.cn/Record.Modify

    请求参数:

    • domain_id 或 domain, 分别对应域名ID和域名, 提交其中一个即可
    • record_id 记录ID,必选
    • sub_domain 主机记录, 如 www,可选,如果不传,默认为 @
    • record_type 记录类型,通过API记录类型获得,大写英文,比如:A,必选
    • record_line 记录线路,通过API记录线路获得,中文,比如:默认,必选
    • record_line_id 线路的ID,通过API记录线路获得,英文字符串,比如:‘10=1’ 【record_line 和 record_line_id 二者传其一即可,系统优先取 record_line_id】
    • value 记录值, 如 IP:200.200.200.200, CNAME: cname.dnspod.com., MX: mail.dnspod.com.,必选
    • mx {1-20} MX优先级, 当记录类型是 MX 时有效,范围1-20, mx记录必选
    • ttl {1-604800} TTL,范围1-604800,不同等级域名最小值不同,可选
    • status [“enable”, “disable”],记录状态,默认为”enable”,如果传入”disable”,解析不会生效,也不会验证负载均衡的限制,可选
    • weight 权重信息,0到100的整数,可选。仅企业 VIP 域名可用,0 表示关闭,留空或者不传该参数,表示不设置权重信息

    脚本(dnspod.ps1,每间隔 5 分钟更新一次):

    while($true) {
        #http://ip.taobao.com/outGetIpInfo?ip=myip&accessKey=alibaba-inc
        #http://ip.taobao.com/service/getIpInfo2.php?ip=myip&accessKey=alibaba-inc
        #https://ipinfo.io/ip
        #https://httpbin.org/ip
        #https://myip.ipip.net/
        #https://ip.sb/
        #https://ifcfg.cn/echo
        #https://ifconfig.me/
    
        #(curl "http://ip-api.com/line/?fields=query" -UseBasicParsing).Content;
        $body = Invoke-WebRequest -Uri "http://ip.03k.org/"
        $ip=$null
        if ($body.StatusCode -eq 200) {
            [string]$ip = $body.ParsedHtml.body.innerHTML
            #$StartIndex = $str.IndexOf("[")
            #$EndIndex = $str.IndexOf("]")
            #$length = $EndIndex - $StartIndex - 1
            #$ip = $str.Substring($StartIndex + 1, $length)
            
            #echo $(Get-Date) $ip;
            Write-Host "$(Get-Date): $ip"
        } else {
            Write-Warning "Bad Request"
        }
    
        $uri = "https://dnsapi.cn/Record.Modify"
        $p_token = "login_token=ID,Token"
        $p_record_line_id = "record_line_id=10%3D0"
        $p_record_id = "record_id=123456789"
        $p_value = "value=" + $ip
        $p_sub_domain = "sub_domain=@"
        $p_record_type = "record_type=A"
        $p_domain = "domain=xxx.com"
        
        curl.exe -X POST https://dnsapi.cn/Record.Modify `
                -d $p_token `
                -d $p_record_line_id `
                -d $p_record_id `
                -d $p_value `
                -d $p_sub_domain `
                -d $p_record_type `
                -d $p_domain
        
        echo `;
        Sleep 300
    }
    # pause

    一般修改三处值即可:

    p_token:格式为 ID,TOKEN

    p_record_id:在网页手动修改一次,查看发送的 HTTP 请求,可以获取到修改域名的 record_id

    p_domain:要修改的记录所对应的域名


    https://www.dnspod.cn/docs/records.html#record-modify

    https://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.utility/invoke-webrequest

    https://www.ruanyifeng.com/blog/2019/09/curl-reference.html

  • 相关阅读:
    深入Java虚拟机(4)——网络移动性
    安装ftp碰到的问题及解决方法
    6.设置ListView的Item的高度无效
    hdu1181(变形课)
    ZooKeeper分布式集群部署及问题
    管理线程之创建线程
    Linux系统编程——多线程实现多任务
    Request.Params用法,后台接收httpget参数
    resharper警告 :linq replace with single call to FirstOrDefault
    SQL Prompt几个快捷键
  • 原文地址:https://www.cnblogs.com/jhxxb/p/13217538.html
Copyright © 2011-2022 走看看