역방향 DNS 조회를 수행하기 위해 쉘 스크립트를 작성하려고 하는데 작동하지 않습니다.
기본적으로 나는 이것을 하고 싶다:
dig -x 8.8.8.8 +short
출력은 다음과 같습니다: google-public-dns-a.google.com
. 출력파일로 보내고 싶습니다.
현재 내 코드는 다음과 같습니다.
#!/bin/bash
#Read a file where per line there will be an IP address. The .in file is the input/sourcelist from which IP addresses are read
cat reverse_dns_lookup.in | while read line
#
do
# Do a reverse lookup
dig -x $line +short
done
스크립트를 실행해도 아무 일도 일어나지 않는 것 같아서 호출하는 대신 dig
먼저 다음과 같이 스크립트를 테스트하는 것이 좋습니다.
echo dig -x $line +short
이것조차도 출력이 생성되지 않습니다. 내가 여기서 무엇을 놓치고 있는 걸까요?
답변1
reverse_dns_lookup.in
포함된 것으로 추정
-x 8.8.8.8
-x 127.0.0.1
그 다음에:
$ dig -f reverse_dns_lookup.in +short
google-public-dns-a.google.com.
localhost.
-x
기존 파일의 내용에 추가 하고 dig
파일을 수정하지 않고 호출하려면 프로세스 대체를 사용하십시오.
$ dig -f <( sed 's/^/-x /' reverse_dns_lookup.in ) +short
이렇게 하면 루프 dig
에서 여러 호출을 방지하고 reverse_dns_lookup.in
.read
그런 다음 출력을 원하는 파일로 리디렉션합니다.
$ dig -f <( sed 's/^/-x /' reverse_dns_lookup.in ) +short >dig-results.txt
성공적인 쿼리 결과와 IP 주소를 연결하려면 다음을 수행하세요.
$ dig -f <( sed 's/^/-x /' reverse_dns_lookup.in ) +noall +answer | awk '{ print $1, $NF }' >dig-results.txt
내가 사용한 예제 파일의 경우 다음과 같습니다.
8.8.8.8.in-addr.arpa. google-public-dns-a.google.com.
1.0.0.127.in-addr.arpa. localhost.
존재하다 dig-results.txt
.
답변2
#!/bin/bash
while read line
do
echo $line - `dig -x "$line" +short`
done < reverse_dns_lookup.in
이 코드는 나에게 잘 작동합니다. 파일이 reverse_dns_lookup.in
올바른 위치에 있는지 확인해야 합니다.
스크립트의 출력을 파일로 보내려면 bash에서 표준 stdin 리디렉션 연산자를 사용하여 리디렉션하면 됩니다.
./script.sh > output_file.txt
또한 변경에 대한 귀하의 우려에 대한 답변으로 IP가 revdns 항목과 함께 표시되었습니다.