Skip to content

Instantly share code, notes, and snippets.

@numpde
Created January 20, 2019 16:37
Show Gist options
  • Save numpde/34aba5fe8e92f67f370275611e190c26 to your computer and use it in GitHub Desktop.
Save numpde/34aba5fe8e92f67f370275611e190c26 to your computer and use it in GitHub Desktop.
Alibaba DNS record update python script
#!/usr/bin/env python3
#coding=utf-8
import subprocess
IP = subprocess.run("dig +short myip.opendns.com @resolver1.opendns.com".split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.decode('UTF-8').split()[0]
print("IP:", IP)
# https://api.aliyun.com/new#/?product=Alidns&api=UpdateDomainRecord&params={}&tab=DEMO&lang=PYTHON
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
client = AcsClient('<KeyID>', '<SecretKey>', 'cn-hongkong')
request = CommonRequest()
request.set_accept_format('json')
request.set_domain('alidns.aliyuncs.com')
# NOW SET NEW VALUES
request.set_version('2015-01-09')
request.set_action_name('UpdateDomainRecord')
request.add_query_param('Type', 'A')
request.add_query_param('Value', IP)
# www
request.add_query_param('RR', 'www')
request.add_query_param('RecordId', '16706609005472768')
response = client.do_action(request)
print(str(response, encoding = 'utf-8'))
# @
request.add_query_param('RR', '@')
request.add_query_param('RecordId', '3645612826285056')
response = client.do_action(request)
print(str(response, encoding = 'utf-8'))
# NOW SHOW ALL DNS RECORDS
request.set_version('2015-01-09')
request.set_action_name('DescribeDomainRecords')
request.add_query_param('DomainName', 'numpde.xyz')
response = client.do_action(request)
import json
res = json.loads(str(response, encoding='utf-8'))
print(json.dumps(res, indent=2))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment