AWS VPC 서브넷에서 사용하지 않는 IP 주소를 나열하는 Python 스크립트

3067 단어 vpcnetworkaws
서브넷에서 사용하지 않는 IP 주소(IPv4)를 나열하는 Python 스크립트를 작성했습니다.

참고로 Henry's post을 사용했습니다. 감사합니다.

기구


  • DescribeSubnets으로 지정된 서브넷의 CIDR을 가져옵니다.
  • DescribeNetworkInterfaces = 사용된 IP 주소
  • 로 지정된 서브넷에서 사용된 개인 IP 주소 가져오기
  • 미사용 IP 주소 계산 = "CIDR IP 주소"- "사용된 IP 주소"- "예약된 IP 주소"

  • 노트


  • CIDR 내의 IP 주소를 계산하기 위해 ipaddress module을 사용했습니다.
  • NetworkInterface 응답에서 기본 주소와 보조 주소를 모두 추출하기 위해 "PrivateIpAddress"대신 "PrivateIpAddresses 배열"을 사용했습니다.
  • 예약된 IP 주소는 official documentation에 설명되어 있습니다.

  • For example, if you create a VPC with CIDR block 10.0.0.0/24, it supports 256 IP addresses. You can break this CIDR block into two subnets, each supporting 128 IP addresses. One subnet uses CIDR block 10.0.0.0/25 (for addresses 10.0.0.0 - 10.0.0.127) and the other uses CIDR block 10.0.0.128/25 (for addresses 10.0.0.128 - 10.0.0.255).



    파이썬 스크립트



    https://github.com/shu85t/aws_describe_unused_ips

    요구 사항


  • >Python3.8
  • 보토3
  • AWS 권한
  • ec2:DescribeSubnets
  • ec2:DescribeNetworkInterfaces


  • 용법




    export AWS_DEFAULT_REGION={region name}
    export AWS_DEFAULT_PROFILE={aws profile name}
    python describe_unused_ips.py {subnet-id}
    



    export AWS_DEFAULT_REGION=ap-northeast-1
    export AWS_DEFAULT_PROFILE=my_aws_account
    python describe_unused_ips.py subnet-000000000000
    


    산출




    subnet_id='subnet-000000000000' mode='normal'
    cidr='10.1.0.0/24'
    cidr_ips=['10.1.0.0', '10.1.0.1', '10.1.0.2', '10.1.0.3', '10.1.0.4', ...]
    -----------
    reserved_ips=['10.1.0.0', '10.1.0.1', '10.1.0.2', '10.1.0.3', '10.1.0.255']
    -----------
    used_ips=['10.1.0.39']
    -----------
    unused_ips=['10.1.0.4', '10.1.0.5', '10.1.0.6', ...]
    -----------
    cidr=10.1.0.0/24 cidr_ips=256 reserved=5 used=1 unused=250
    

    좋은 웹페이지 즐겨찾기