Skip to content

Instantly share code, notes, and snippets.

@nickrw
Created April 5, 2017 15:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nickrw/f4f48b6cf88e2700b13ea1be1050fab8 to your computer and use it in GitHub Desktop.
Save nickrw/f4f48b6cf88e2700b13ea1be1050fab8 to your computer and use it in GitHub Desktop.
ELB DNS logger
#!/usr/bin/env python
# Logs all IP addresses for every ELB in an AWS account
import boto3
import dns.resolver
from dns.exception import DNSException
import logging
logger = logging.getLogger('elbdns')
elb = boto3.client('elb')
def get_elbs():
elbs = []
paginator = elb.get_paginator('describe_load_balancers')
for page in paginator.paginate():
elbs.extend(page['LoadBalancerDescriptions'])
return elbs
def resolve_name(name):
result = dns.resolver.query(name)
records = sorted([x.address for x in result.response.answer[0].items])
return records
def main():
for elb in get_elbs():
elb_name = elb['LoadBalancerName']
dns_name = elb['DNSName']
try:
a_records = resolve_name(dns_name)
logger.info("ELB {} {} resolves to {}"
.format(elb_name, dns_name, ', '.join(a_records)),
extra={'elb_name': elb_name,
'dns_name': dns_name,
'elb_ips': a_records})
except DNSException as e:
logger.exception("Error resolving ELB {} {}: {}"
.format(elb_name, dns_name, e),
extra={'elb_name': elb_name,
'dns_name': dns_name})
if __name__ == "__main__":
logging.basicConfig()
logger.setLevel(logging.INFO)
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment