Skip to content

Instantly share code, notes, and snippets.

@RC1140
Last active October 8, 2015 07:29
Show Gist options
  • Save RC1140/3299314 to your computer and use it in GitHub Desktop.
Save RC1140/3299314 to your computer and use it in GitHub Desktop.
DynamicDNS For Use With AmazonRoute53
#!/usr/bin/env python
import stun
import socket
import route53
domainName = ''#Make sure this is a FQDN i.e. it should have a '.' at the end.
access_id = ''
secret_key = ''
hostedZoneID = '' #Get this from your aws account
try:
#This can be changed to look at the aws record if you dont want to make a socket call to the machine.
oldIP = socket.gethostbyname(domainName)
except:
oldIP = 'Not found'
nat_type, current_ip, external_port = stun.get_ip_info()
conn = route53.connect(
aws_access_key_id=access_id,
aws_secret_access_key=secret_key,
)
zone = conn.get_hosted_zone_by_id(hostedZoneID)
#Find the recordset we are looking for and store it
recset = None
for record_set in zone.record_sets:
if record_set.name == domainName:
recset = record_set
break
#if the IP has changed save it
if oldIP.__str__() != current_ip.__str__():
#Print the old and current IP for logging purposes
print oldIP.__str__()
print current_ip.__str__()
#Overwrite the existing records , this should always be a single IP as string
recset.records = [current_ip.__str__()]
recset.save()
print 'updated recset'
@RC1140
Copy link
Author

RC1140 commented Sep 25, 2013

If you are unable to install pytz because of issues with pip , add the following to a file called requirements.txt
"pytz>=2013b"
and then install with with , pip install -r requirements.txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment