import boto3 import csv from gdb_accounts import ACCOUNTS def get_splunk_instances(account_alias): # Create boto3 session session = boto3.Session(profile_name=account_alias) # Create an EC2 client ec2 = session.client('ec2') # Filter for instances with tag 'splunk' set to 'true' filters = [ { 'Name': 'tag:splunk', 'Values': ['true'] } ] # Retrieve instances with the specified tag and value paginator = ec2.get_paginator('describe_instances') page_iterator = paginator.paginate(Filters=filters) # List to hold the instance details instance_details = [] for page in page_iterator: for reservation in page['Reservations']: for instance in reservation['Instances']: state = instance.get('State') # Only add instances that are running and have an IP address if state['Name'] == 'running': instance_info = ( instance.get('InstanceId'), instance.get('PublicDnsName'), instance.get('PublicIpAddress'), instance.get('PrivateDnsName'), instance.get('PrivateIpAddress') ) instance_details.append(instance_info) return instance_details def main(): with open('splunk-instances.csv', 'w') as f: writer = csv.writer(f , lineterminator='\n') writer.writerow(('Instance ID', 'Public Dns Name', 'Public IP', 'Private Dns Name', 'Private IP')) for account_id, account_alias in ACCOUNTS.items(): for tup in get_splunk_instances(account_alias): writer.writerow(tup) if __name__ == '__main__': main()