Bash에서 IP를 찾아 파일에 쓰기

Bash에서 IP를 찾아 파일에 쓰기

IP를 찾고 파일에 쓰기 위해 호스트 이름 목록을 역조회하려고 합니다. 내 말은이것튜토리얼을 작성하고 호스트 이름 목록을 사용하도록 확장하세요. 저는 Bash 스크립팅을 처음 접했고 이것이 제가 생각해낸 것이지만 예상대로 인쇄되지 않습니다.

for name in hostA.com hostB.com hostC.com;
do
    host $name | grep "has address" | sed 's/.*has address //' |
    awk '{print "allow\t\t" $1 ";" }' > ./allowedip.inc
done

답변1

사용 dig:

for host in hostA.com hostB.com hostC.com
do
    # get ips to host using dig
    ips=($(dig "$host" a +short | grep '^[.0-9]*$'))
    for ip in "${ips[@]}";
    do
        printf 'allow\t\t%s\n' "$ip"
    done
done > allowedip.inc

산출:

$ cat allowedip.inc
allow       64.22.213.2
allow       67.225.218.50
allow       66.45.246.141

한 줄에 하나의 호스트씩 파일을 반복합니다.

while IFS= read -r host;
do
    # get ips to host using dig
    ips=($(dig "$host" a +short | grep '^[.0-9]*$'))
    for ip in "${ips[@]}";
    do
        printf 'allow\t\t%s\n' "$ip"
    done
done < many_hosts_file > allowedip.inc

답변2

grep의 예:

$ host google.com|grep -oP "has address \K.*"                                                  
216.58.214.238

관련 정보