임의의 IP 주소를 생성하는 방법

임의의 IP 주소를 생성하는 방법
$ nmap -n -iR 0 -sL > RANDOM-IPS-TMP.txt
$ grep -o "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" RANDOM-IPS-TMP.txt |
      egrep -v "10.*|172.[16-32].*|192.168.*|[224-255].*" > RANDOM-IPS.txt
egrep: Invalid range end
$ 

개인 IP 주소 범위와 멀티캐스트 IP 주소 범위를 벗어나는 임의의 IP 주소를 생성하는 방법은 무엇입니까?

답변1

정규식 구문을 잘못 이해했습니다. [16-32]"16, 17, ... 또는 32와 일치"를 의미하지 않습니다. 이는 "1, 2 또는 6-3 범위의 문자와 일치"를 의미합니다(유효한 범위가 아니므로 오류가 발생함).

정수 범위와 일치하는 정규식을 작성할 수 있지만 복잡하고 오류가 발생하기 쉽습니다. 귀하의 경우에는 nmap'를 사용하는 것이 더 쉬울 것입니다.--exclude옵션필요하지 않은 범위를 제외하세요. 이는 말하는 범위를 설명하는 더 간단한 방법인 CIDR 표기법을 이해합니다.

nmap -n -iR 0 --exclude 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,224-255.-.-.- -sL >RANDOM-IPS.txt

루프백 블록(127.0.0.0/8)에 대해서는 언급하지 않았지만 아마도 이 블록도 제외해야 할 것입니다.

답변2

이 셸 조각은 IP 주소를 생성합니다.

ip_address=$(dd if=/dev/urandom bs=4 count=1 2>/dev/null |
             od -An -tu1 |
             sed -e 's/^ *//' -e 's/  */./g')

만족스럽지 않다면 반복해서 다시 시도해 보세요.

while
  set $(dd if=/dev/urandom bs=4 count=1 2>/dev/null | od -An -tu1)
  [ $1 -lt 224 ] &&
  [ $1 -ne 10 ] &&
  { [ $1 -ne 192 ] || [ $2 -ne 168 ]; } &&
  { [ $1 -ne 172 ] || [ $2 -lt 16 ] || [ $2 -gt 31 ]; }
do :; done
ip_address=$1.$2.$3.$4

관련 정보