Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # List of all AWS regions (as of 2024)
- # Since we don't have ec2:DescribeRegions permission, we'll use a hardcoded list
- regions=(
- "us-east-1"
- "us-east-2"
- "us-west-1"
- "us-west-2"
- "af-south-1"
- "ap-east-1"
- "ap-south-1"
- "ap-south-2"
- "ap-northeast-1"
- "ap-northeast-2"
- "ap-northeast-3"
- "ap-southeast-1"
- "ap-southeast-2"
- "ap-southeast-3"
- "ap-southeast-4"
- "ca-central-1"
- "ca-west-1"
- "eu-central-1"
- "eu-central-2"
- "eu-west-1"
- "eu-west-2"
- "eu-west-3"
- "eu-south-1"
- "eu-south-2"
- "eu-north-1"
- "il-central-1"
- "me-south-1"
- "me-central-1"
- "sa-east-1"
- )
- echo "Checking EC2 instances across all regions..."
- echo "Current AWS Identity:"
- aws sts get-caller-identity
- echo ""
- # Counter for total instances
- total_instances=0
- # Loop through each region
- for region in "${regions[@]}"; do
- echo "Checking region: $region"
- # Try to describe instances in the region
- result=$(aws ec2 describe-instances \
- --region "$region" \
- --query "Reservations[*].Instances[*].[InstanceId, Tags[?Key=='Name'].Value|[0], State.Name, InstanceType, PrivateIpAddress, PublicIpAddress]" \
- --output json 2>&1)
- # Check if the command was successful
- if [[ $? -eq 0 ]]; then
- # Count instances in this region
- instance_count=$(echo "$result" | jq 'flatten | length' 2>/dev/null || echo "0")
- if [[ $instance_count -gt 0 ]]; then
- echo "Found $instance_count instance(s) in $region:"
- aws ec2 describe-instances \
- --region "$region" \
- --query "Reservations[*].Instances[*].[InstanceId, Tags[?Key=='Name'].Value|[0], State.Name, InstanceType, PrivateIpAddress, PublicIpAddress]" \
- --output table
- total_instances=$((total_instances + instance_count))
- else
- echo "No instances found in $region"
- fi
- else
- # Check if it's a permission error or region doesn't exist/not enabled
- if echo "$result" | grep -q "UnauthorizedOperation"; then
- echo "ERROR: No permission to describe instances in $region"
- elif echo "$result" | grep -q "AuthFailure"; then
- echo "ERROR: Authentication failure for $region"
- elif echo "$result" | grep -q "not subscribed\|not enabled\|not found"; then
- echo "SKIP: Region $region not enabled for this account"
- else
- echo "ERROR in $region: $result"
- fi
- fi
- echo "---"
- done
- echo ""
- echo "Total instances found across all regions: $total_instances"
Advertisement