123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- #! /usr/bin/python
- #
- # Find an instance within a profile, across all regions
- #
- # Unbuffered, no CRLF print:
- from __future__ import print_function
- import sys, os
- import boto3
- import boto3.session
- import threading # We may not do it yet, but developing with threadsafe in mind, as best I can
- try:
- # Python 3
- import builtins
- except ImportError:
- # Python 2
- import __builtin__ as builtins
- # Debug levels:
- # 1 = Show progress
- # 2 = Informational
- # 5 = Include boto3 logging
- DEBUG=0
- # Fancy print function to make it 3.4 compatible:
- if len(sys.argv) != 3:
- print("Usage: " + os.path.basename(sys.argv[0]) + "<searchstring> <profile>")
- exit(1)
- if DEBUG >= 5:
- boto3.set_stream_logger('botocore', level=DEBUG)
- SEARCHSTRING=sys.argv[1]
- PROFILE=sys.argv[2]
- # Set the profile to use
- try:
- boto3.setup_default_session(profile_name=PROFILE)
- except:
- print("Could not find profile: " + PROFILE)
- exit(2)
- # Connect to ec2
- ec2 = boto3.client('ec2')
- # Grab list of regions
- regions = set()
- for region in ec2.describe_regions()['Regions']:
- regions.add(region['RegionName'])
- # For each array, let's search:
- FOUND=0
- FOUNDSTR=""
- if DEBUG == 1:
- print("Searching.", end="")
- sys.stdout.flush()
- for region in regions:
- if DEBUG == 1:
- print(".", end="")
- sys.stdout.flush()
- if DEBUG >= 2:
- print("Searching region " + region + " in profile " + PROFILE)
- ec2 = boto3.client('ec2', region_name=region)
- try:
- instance = ec2.describe_instances(InstanceIds=[ SEARCHSTRING ])
- FOUND=FOUND+1
- if DEBUG >= 2:
- print("FOUND in profile '" + PROFILE + "', Region: '" + region + "'")
- if FOUND > 1:
- FOUNDSTR = FOUNDSTR + "\n"
- FOUNDSTR = FOUNDSTR + "FOUND in profile '" + PROFILE + "', Region: '" + region
- except:
- if DEBUG >= 2:
- print("Not found in profile '" + PROFILE + "', Region: '" + region + "'")
- # End of for region
- if DEBUG == 1:
- print(".")
- sys.stdout.flush()
- if DEBUG >= 2:
- print("Found " + str(FOUND) + " instances.")
- if FOUND > 0:
- print(FOUNDSTR)
- exit(0)
- else:
- if DEBUG == 1:
- print("Not found.")
- exit(255)
|