Bash는 현재 줄, 줄의 출력 및 줄 바꿈을 파일로 인쇄합니다.

Bash는 현재 줄, 줄의 출력 및 줄 바꿈을 파일로 인쇄합니다.

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 readxargs일 수 있습니다.

$ 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.

관련 정보