<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      faith丶

      導航

      更新路由器公網ip到阿里云dns解析py腳本

      1、阿里云需要對子用戶添加授權后ACCESS_KEY_ID,ACCESS_KEY_SECRET才可以正常訪問接口

       

      2、腳本支持ipv4+ipv6解析更新

      cat aliyun_ddns.py
      
      import requests
      import json
      import os
      import datetime
      # 安裝aliyunsdkcore、aliyunsdkcore,pip install aliyun-python-sdk-core-v3 aliyun-python-sdk-alidns aliyun-fc2
      import aliyunsdkcore
      import aliyunsdkalidns
      
      # 阿里云配置  --- 修改:修改對應value
      ACCESS_KEY_ID = "L******************UX"
      ACCESS_KEY_SECRET = "9u****************3"
      DOMAIN_NAME = "yuming.com"
      # REGION固定即可
      REGION = "cn-hangzhou"
      
      # RECORD_NAMES :# 要綁定的 RR 值,域名前綴,例如www.本次使用到v6.yuming.com,v4.yuming.com。 RECORD_TYPES:v6對應 AAAA記錄類型, v4對應A記錄類型
      RECORD_NAMES_TYPE = {
          'v4': 'A',
          'v6': 'AAAA'
      }
      
      # 日志配置 --- 修改:根據自身需求要修改參數
      # 是否記錄日志 yes:記錄日志,no:不記錄日志,只在控制臺輸出。
      WHETHER_RECORD_LOG='no'
      # 日志文本名稱:位置為腳本所在位置
      LOG_DIR="me-test.log"
      
      # ===============================================
      def log(message):
          # 帶時間戳的日志記錄
          now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
          if WHETHER_RECORD_LOG == 'yes' :
              # 如下代碼將日志追加到文件中
              # 獲取當前腳本所在的目錄
              current_dir = os.path.dirname(os.path.abspath(__file__))
              # 構建日志文件的完整路徑
              log_file_path = os.path.join(current_dir, LOG_DIR)
              # 以追加模式打開文件
              with open(log_file_path, 'a') as file:
                  # 向文件中追加內容
                  file.write(f"[{now}] {message}\n")
          elif WHETHER_RECORD_LOG == 'no':
              print(f"[{now}] {message}")
      
      def get_public_ip():
          """獲取公網 IP 地址方法一:此只能獲取到ipv4
          try:
              response = requests.get("http://www.3322.org/dyndns/getip", timeout=5)
              response.raise_for_status()
              ip_address = response.text.strip()
              return ip_address
          except requests.exceptions.RequestException as e:
              log(f"獲取公網 IP 失敗: {e}")
              return None
          """
          """獲取公網 IP 地址方法二:獲取ipv4+ipv6公網地址"""
          try:
              response_ipv4 = requests.get("http://ipv4.lookup.test-ipv6.com/ip/", timeout=5)
              response_ipv6 = requests.get("http://ipv6.lookup.test-ipv6.com/ip/", timeout=5)
              ipv4 = json.loads(response_ipv4.text.strip())['ip']
              ipv6 = json.loads(response_ipv6.text.strip())['ip']
              ip_address = {}
              ip_address['v4'] = ipv4
              ip_address['v6'] = ipv6
              return ip_address
          except requests.exceptions.RequestException as e:
              log(f"獲取公網 IP 失敗: {e}")
              return None
      
      def get_aliyun_dns_record_id(record_name, ip_address, record_type):
          """獲取阿里云 DNS 記錄的 RecordId"""
          from aliyunsdkcore.client import AcsClient
          from aliyunsdkalidns.request.v20150109.DescribeDomainRecordsRequest import DescribeDomainRecordsRequest
          client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION)
          request = DescribeDomainRecordsRequest()
          request.set_DomainName(DOMAIN_NAME)
          request.set_RRKeyWord(record_name)  # 使用 RRKeyWord
          request.set_TypeKeyWord(record_type)
          request.set_accept_format('json')
          response = client.do_action_with_exception(request)
          response_json = json.loads(response.decode('utf-8'))
          #
          for record in response_json["DomainRecords"]["Record"]:
              if record["RR"] == record_name and record["Type"] == record_type:  # Double Check
                  return record["RecordId"], record["Value"]
          return None, None
      
      def update_aliyun_dns_record(record_id, record_name, ip_address, old_ip, record_type):
          """更新阿里云 DNS 記錄"""
          from aliyunsdkcore.client import AcsClient
          from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequest
          if old_ip == ip_address:
              log(f"域名: {DOMAIN_NAME}, RR: {record_name} IP地址沒有變化,無需更新")
              return
          client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION)
          request = UpdateDomainRecordRequest()
          request.set_RecordId(record_id)
          request.set_RR(record_name)
          request.set_Type(record_type)
          request.set_Value(ip_address)
          request.set_accept_format('json')
      
          response = client.do_action_with_exception(request)
          log(str(response, encoding='utf-8'))  # 打印完整響應信息
      
      def process_record(record_name, public_ip, record_type):
          """處理單個 DNS 記錄"""
          record_id, old_ip = get_aliyun_dns_record_id(record_name, public_ip, record_type)
          if not record_id:
              log(f"未找到匹配的 DNS 記錄 (域名: {DOMAIN_NAME}, RR: {record_name}, Type: {record_type})。請檢查配置。")
              return
      
          log(f"找到 DNS 記錄 ID: {record_id}, 域名: {DOMAIN_NAME}, RR: {record_name}, 當前IP地址: {old_ip}")
      
          update_aliyun_dns_record(record_id, record_name, public_ip, old_ip, record_type)
          log(f"域名: {DOMAIN_NAME}, RR: {record_name} DNS 記錄更新完成。")
      
      def main():
          """主函數"""
          all_public_ip = get_public_ip()
          if not all_public_ip:
              log("未能獲取公網 IP 地址,程序終止。")
              return
      
          log(f"當前公網 IP 地址: {all_public_ip}")
          for record_name in RECORD_NAMES_TYPE.keys():
              record_type = RECORD_NAMES_TYPE[record_name]
              public_ip = all_public_ip[record_name]
              process_record(record_name, public_ip, record_type)
      
      
      if __name__ == "__main__":
          # 檢查是否安裝了 aliyun-python-sdk-core 和 aliyun-python-sdk-alidns
          try:
              import aliyunsdkcore
              import aliyunsdkalidns
          except ImportError:
              print("缺少必要的 Python 庫。請先安裝 aliyun-python-sdk-core 和 aliyun-python-sdk-alidns。")
              print(
                  "使用命令: pip install aliyun-python-sdk-core-v3 aliyun-python-sdk-alidns aliyun-fc2")
              os._exit(1)
          # 如果記錄日志到文本需要,初始化日志分隔符
          if WHETHER_RECORD_LOG == 'yes':
              # 獲取當前腳本所在的目錄
              current_dir = os.path.dirname(os.path.abspath(__file__))
              # 構建日志文件的完整路徑
              log_file_path = os.path.join(current_dir, LOG_DIR)
              with open(log_file_path, 'a') as file:
                  # 向文件中追加內容
                  file.write(f"=" * 20 + '\n')
          main()

       

       

       

      3、執行過程

      1).需要再阿里云先添加如下ipv6、ipv4d的dns解析(如果只需要ipv6,刪掉ipv4即可),首次填寫時記錄值隨意填寫即可

       2)、執行腳本

       3)、再次查看阿里云dns解析ipv4、ipv6記錄值已更新為當前IP地址

       

      #

       

      posted on 2025-03-25 11:04  faith丶  閱讀(106)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 日韩福利片午夜免费观着| 亚洲综合伊人久久大杳蕉| 亚洲区激情区无码区日韩区| 九九热中文字幕在线视频| 国产一区二区高清不卡| 国产成人精品永久免费视频| 无码一区二区三区久久精品| 国产午夜福利视频在线| 久久中文字幕国产精品| 国产高清免费午夜在线视频| 国产爆乳无码av在线播放| 俄罗斯美女真人性做爰| 国产亚洲综合一区二区三区| 国产精品一线天粉嫩av| 日韩精品亚洲不卡一区二区| 欧美黑人性暴力猛交在线视频| 疯狂做受XXXX高潮国产| 亚洲乱码一区二区三区视色 | 亚洲精品熟女一区二区| 欧美成人h亚洲综合在线观看| 亚洲一区二区三区在线观看精品中文| 在线观看无码av免费不卡网站 | 制服丝袜美腿一区二区| 国产精品毛片大码女人| 中文字幕 制服 亚洲 另类| 精品一区二区三区日韩版| 亚洲男人在线天堂| 久久精品中文字幕少妇| 欧美熟妇xxxxx欧美老妇不卡| 久久99国产精一区二区三区! | 欧美z0zo人禽交另类视频| 中文日产幕无线码一区中文| 亚洲国产精品线观看不卡| 亚洲乱码日产精品bd在线| 高清自拍亚洲精品二区| 亚洲性美女一区二区三区| 久久不卡精品| 中文字幕久久波多野结衣av| 久国产精品韩国三级视频| 国产午夜美女福利短视频| 天天做日日做天天添天天欢公交车|