Skip to content

Instantly share code, notes, and snippets.

@dgulinobw
dgulinobw / replace_ec2_sg_ip.py
Created February 20, 2018 18:35
Replaces CidrIP with new one in all AWS EC2 security groups
#!/usr/bin/env python
from __future__ import print_function
import json
import boto3
ip="1.1.1.1/32"
new_ip="2.2.2.2/32"'
for region in ["us-east-1","us-west-1", "us-west-2"]:
@dgulinobw
dgulinobw / get_iam_rights_for_user.py
Last active March 27, 2018 19:49
Get all IAM rights for a particular user.
#!/usr/bin/env python
from __future__ import print_function
# Displays all the policies associated to IAM username
# Useful for reviewing IAM user rights
# Requirements:
#
# Environmental variables:
# AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
# python:
@dgulinobw
dgulinobw / cat_ec2_security_groups.py
Created February 19, 2018 22:48
Print out ec2 security group inbound rules, so you can grep on IPs, etc.
#!/usr/bin/env python
from __future__ import print_function
import json
import boto3
for region in ["us-east-1","us-west-1", "us-west-2"]:
ec2=boto3.client('ec2', region )
sgs = ec2.describe_security_groups()["SecurityGroups"]
for sg in sgs:
@dgulinobw
dgulinobw / aws_healthchecks.sh
Created May 19, 2018 15:22
list AWS R53 healthcheck id and name in two columns
#!/bin/bash
aws route53 list-health-checks | jq -r '["ID","FQDN"], ["--","---"], (.[][] | [.Id, .HealthCheckConfig.FullyQualifiedDomainName]) | @tsv'
@dgulinobw
dgulinobw / ec2_instance_id_from_name.sh
Last active February 20, 2019 15:59
ec2_instance_id_from_name.sh
#!/bin/bash
InstanceName=$1
#for region in `aws ec2 describe-regions --output text | cut -f3` #unoptimized list order, but dynamic
for region in us-east-1 us-east-2 us-west-1 us-west-2 eu-north-1 ap-south-1 eu-west-3 eu-west-2 eu-west-1 ap-northeast-2 ap-northeast-1 sa-east-1 ca-central-1 ap-southeast-1 ap-southeast-2 eu-central-1;
do
Id=$(aws ec2 describe-instances --region $region --filters Name=tag-value,Values=$InstanceName | jq -r .Reservations[].Instances[].InstanceId)
if [ "$Id" != "" ];
then
echo $Id
break
@dgulinobw
dgulinobw / ec2_instance_name_from_id.sh
Created February 20, 2019 16:15
ec2_instance_name_from_id.sh
#!/bin/bash
InstanceId=$1
#for region in `aws ec2 describe-regions --output text | cut -f3` #unoptimized list order
for region in us-east-1 us-east-2 us-west-1 us-west-2 eu-north-1 ap-south-1 eu-west-3 eu-west-2 eu-west-1 ap-northeast-2 ap-northeast-1 sa-east-1 ca-central-1 ap-southeast-1 ap-southeast-2 eu-central-1;
do
Name=$(aws ec2 describe-instances --region $region --instance-ids=$InstanceId | jq -r '.Reservations[].Instances[].Tags[] | select(.Key=="Name").Value')
if [ "$Name" != "" ];
then
echo $Name
break
@dgulinobw
dgulinobw / ec2_tag_by_hostname.py
Last active February 22, 2019 23:47
Tag ec2 resources based on associated instance's tags.
#!/usr/bin/env python
from __future__ import print_function
import sys
import os
import json
import boto3
from botocore.exceptions import ClientError
@dgulinobw
dgulinobw / r53_cert_scan.sh
Created October 17, 2019 17:00
Scan all domains in a route53 zone for TLS certificate expiration dates
#!/bin/bash
export DOMAIN=test.info
export PROFILE=default
aws --profile ${PROFILE} route53 list-resource-record-sets --hosted-zone-id $(aws --profile ${PROFILE} route53 list-hosted-zones-by-name --dns-name ${DOMAIN} --max-items 1 | jq -r .HostedZones[0].Id) > /tmp/${DOMAIN}.json
for a in $(cat /tmp/${DOMAIN}.json | jq -r '.[][] | "\(.Name),\(.ResourceRecords[0].Value)"' | sort | uniq); do
rr=$(echo $a | awk -F"," '{print $1}')
value=$(echo $a | awk -F"," '{print $2}')
echo -n "$rr,$value,"
@dgulinobw
dgulinobw / iam_scan.py
Last active November 14, 2019 14:30
List all IAM policies in account. Pipe to grep to find who has access to what.
#!/usr/bin/env python
from __future__ import print_function
import boto3
from pygments import highlight, lexers, formatters
from botocore.exceptions import ClientError
iam = boto3.resource('iam')
s3 = boto3.client('s3')
@dgulinobw
dgulinobw / ddbBackup.py
Created January 17, 2020 15:23
AWS Lambda + standalone script to backup all DynamoDB tables.
#!/usr/bin/env python
#based on:
#https://aws.amazon.com/blogs/database/a-serverless-solution-to-schedule-your-amazon-dynamodb-on-demand-backup/
from __future__ import print_function
from datetime import date, datetime, timedelta
import json
import boto3
import time
from botocore.exceptions import ClientError
import os