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

ファイルのすべての行を実行したくない場合は、次のようにしますdigread

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.

関連情報