This commit is contained in:
42
dyndns/aws.py
Executable file
42
dyndns/aws.py
Executable file
@@ -0,0 +1,42 @@
|
||||
import json
|
||||
import argparse
|
||||
from datetime import datetime
|
||||
from subprocess import check_call
|
||||
from .utils import get_public_ip
|
||||
|
||||
def run():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('-z', "--hosted-zone", metavar='HOSTED_ZONE_ID', required=True,
|
||||
help="Specify the hosted zone id")
|
||||
parser.add_argument('-d', "--domain", metavar='DOMAIN_NAME', required=True,
|
||||
help="Specify domain name")
|
||||
parser.add_argument('-t', "--type", metavar='DNS_TYPE', default='A',
|
||||
help="Specify DNS type")
|
||||
parser.add_argument('-l', "--ttl", metavar='TTL_S', type=int, default=300,
|
||||
help="Specify time-to-live in seconds")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
date = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||
public_ip = get_public_ip()
|
||||
params = {
|
||||
'Comment': f'Auto update by awsdyndns on {date}',
|
||||
'Changes': [
|
||||
{
|
||||
'Action': 'UPSERT',
|
||||
'ResourceRecordSet': {
|
||||
'ResourceRecords': [{'Value': public_ip}],
|
||||
'Name': args.domain,
|
||||
'Type': args.type,
|
||||
'TTL': args.ttl
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
check_call(['aws', 'route53', 'change-resource-record-sets', '--hosted-zone-id', args.hosted_zone, '--change-batch', json.dumps(params)])
|
||||
|
||||
if __name__ == "__main__":
|
||||
run()
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user