Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions train/train.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import boto.vpc

from vpc.config import *
import vpc.audit as audit
import vpc.instances as inst
import vpc.labs as labs
import vpc.register as register
Expand Down Expand Up @@ -63,6 +64,10 @@
help='Terminate environment (VPC and local files)',
action='store_true', required=False)

parser.add_argument('-s',
help='Perform an AWS audit and create a status report',
action='store_true', required=False)

args = parser.parse_args()


Expand Down Expand Up @@ -101,6 +106,8 @@ def process():
inst.terminate_all_instances(conn, user_vpc)
if args.t:
vpc.terminate_environment(conn, user_vpc)
if args.s:
audit.generate_report(conn)


if __name__ == '__main__':
Expand Down
85 changes: 85 additions & 0 deletions train/vpc/audit.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import boto.ec2
import boto.vpc

from boto.iam.connection import IAMConnection

from config import *

# TODO
# don't pass in conn????
# loop through regions for everything


def header(txt):
print "*" * 30
print txt
print "*" * 30


def list_users():
"""List all user information"""

header("AWS Users")
conn = IAMConnection()
users = conn.get_all_users()

for user in users.list_users_result.users:
print "- Username: {0}".format(user.user_name)
print " Created: {0}".format(user.create_date.split('T')[0])
print " User ID: {0}".format(user.user_id)
try:
print " Password Last Used: {0}".format(user.password_last_used.split('T')[0])
except:
print " Password Last Used: N/A"
print ""


def get_regions():
regions = boto.ec2.regions()

final = []
for r in regions:
final.append(str(r).split(':')[1])

# Remove isolated/special regions
final.remove('cn-north-1') # China/Bejing
final.remove('us-gov-west-1') #GovCloud

final.sort()
return final


def list_vpcs(conn):


header("VCP Information")
regions = get_regions()

for r in regions:
print "=" * (8 + len(r))
print "Region: {0}".format(r)
print "=" * (8 + len(r))
print ""
conn = boto.vpc.connect_to_region(r)
vpcs = conn.get_all_vpcs()

for v in vpcs:
print "ID: {0}".format(v.id)
print "~" * 16
print " Is Default: {0}".format(v.is_default)
print " State: {0}".format(v.state)
print " CIDR Block: {0}".format(v.cidr_block)
if v.tags:
print " Tags:"
for k,v in v.tags.iteritems():
print " {0}: {1}".format(k, v)
print ""
print ""


def generate_report(conn):
list_users()
list_vpcs(conn)