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
為避免執行文件
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 IN 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.