Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3
- import subprocess
- import json
- def get_val_from_key(tags, key):
- for tag in tags:
- if tag['Key'] == key:
- return tag['Value']
- return ""
- result = subprocess.run(['aws', 'ec2', 'describe-instances'], stdout=subprocess.PIPE)
- instance_data = json.loads(result.stdout)
- instances = []
- for instance in instance_data['Reservations']:
- instances.append({
- 'id': instance['Instances'][0]['InstanceId'],
- 'type': instance['Instances'][0]['InstanceType'],
- 'name': get_val_from_key(instance['Instances'][0]['Tags'], 'Name'),
- 'env': get_val_from_key(instance['Instances'][0]['Tags'], 'Environment'),
- 'state': instance['Instances'][0]['State']['Name'],
- })
- result = subprocess.run(['aws', 'ec2', 'describe-instance-status'], stdout=subprocess.PIPE)
- status_data = json.loads(result.stdout)
- statuses = {}
- for status in status_data['InstanceStatuses']:
- statuses[status['InstanceId']] = {
- 'reach': status['InstanceStatus']['Details'][0]['Status'],
- 'az': status['AvailabilityZone'],
- }
- print(f" {'NAME':20} {'ENV':7} {'STATE':10} {'REACHABILITY':13} {'TYPE':12} {'ZONE'}")
- for instance in sorted(instances, key=lambda i: i['env']):
- stat = statuses.get(instance['id'], {'az': '', 'reach': ''})
- az = stat['az']
- reach = stat['reach']
- print(f" {instance['name']:20} {instance['env']:7} {instance['state']:10} {reach:13} {instance['type']:11} {az}")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement