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.