Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. #!/usr/bin/python3
  2. import subprocess
  3. import json
  4.  
  5.  
  6. def get_val_from_key(tags, key):
  7. for tag in tags:
  8. if tag['Key'] == key:
  9. return tag['Value']
  10. return ""
  11.  
  12.  
  13. result = subprocess.run(['aws', 'ec2', 'describe-instances'], stdout=subprocess.PIPE)
  14. instance_data = json.loads(result.stdout)
  15.  
  16. instances = []
  17. for instance in instance_data['Reservations']:
  18. instances.append({
  19. 'id': instance['Instances'][0]['InstanceId'],
  20. 'type': instance['Instances'][0]['InstanceType'],
  21. 'name': get_val_from_key(instance['Instances'][0]['Tags'], 'Name'),
  22. 'env': get_val_from_key(instance['Instances'][0]['Tags'], 'Environment'),
  23. 'state': instance['Instances'][0]['State']['Name'],
  24. })
  25.  
  26. result = subprocess.run(['aws', 'ec2', 'describe-instance-status'], stdout=subprocess.PIPE)
  27. status_data = json.loads(result.stdout)
  28.  
  29. statuses = {}
  30. for status in status_data['InstanceStatuses']:
  31. statuses[status['InstanceId']] = {
  32. 'reach': status['InstanceStatus']['Details'][0]['Status'],
  33. 'az': status['AvailabilityZone'],
  34. }
  35.  
  36. print(f" {'NAME':20} {'ENV':7} {'STATE':10} {'REACHABILITY':13} {'TYPE':12} {'ZONE'}")
  37. for instance in sorted(instances, key=lambda i: i['env']):
  38. stat = statuses.get(instance['id'], {'az': '', 'reach': ''})
  39. az = stat['az']
  40. reach = stat['reach']
  41. 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