dig +short mx를 실행해야 하는 도메인에 대한 많은 txt가 있습니다.
이 명령을 실행하고 results.txt에 인쇄하는 스크립트를 설정했습니다.
./dig_domain_mx.sh > results.txt
단점은 어떤 필드가 각 결과와 연관되어 있는지 알 수 있어야 하므로 내 해결책은 스크립트가 읽고 있는 현재 줄을 인쇄한 다음 해당 줄에 대한 dig 출력을 인쇄하고 줄 바꿈을 추가하는 것입니다.
dig 명령만 사용하여 이 작업을 수행할 수 있다는 것을 암시하는 내용을 찾을 수 없는 것 같습니다. 그렇다면 Bash 스크립트에서 이 문제를 해결하려면 어떻게 해야 합니까?
현재 Bash 스크립트는 특별한 것이 없습니다.
#!/bin/bash
dig -f domains.txt +short mx
답변1
파일의 모든 줄을 실행하지 않으려면 다음을 수행하십시오 dig
.read
dig -f domains.txt mx +noall +answer
그러면 다음과 같은 출력이 제공됩니다.
stackexchange.com. 300 IN MX 5 alt1.aspmx.l.google.com.
stackexchange.com. 300 IN MX 1 aspmx.l.google.com.
stackexchange.com. 300 IN MX 10 alt3.aspmx.l.google.com.
stackexchange.com. 300 IN MX 10 alt4.aspmx.l.google.com.
stackexchange.com. 300 IN MX 5 alt2.aspmx.l.google.com.
google.com. 600 IN MX 10 aspmx.l.google.com.
google.com. 600 IN MX 30 alt2.aspmx.l.google.com.
google.com. 600 IN MX 20 alt1.aspmx.l.google.com.
google.com. 600 IN MX 40 alt3.aspmx.l.google.com.
google.com. 600 IN MX 50 alt4.aspmx.l.google.com.
파이프를 통해 awk '{print $1,$5,$6}'
삭제할 수 있습니다300인치MX.
루프의 대안은 while read
xargs일 수 있습니다.
$ xargs -tn1 dig mx +short < domains.txt
dig mx +short stackexchange.com
1 aspmx.l.google.com.
10 alt3.aspmx.l.google.com.
10 alt4.aspmx.l.google.com.
5 alt2.aspmx.l.google.com.
5 alt1.aspmx.l.google.com.
dig mx +short google.com
20 alt1.aspmx.l.google.com.
30 alt2.aspmx.l.google.com.
40 alt3.aspmx.l.google.com.
50 alt4.aspmx.l.google.com.
10 aspmx.l.google.com.