我一直在慢慢穩定地開發bash腳本,可以快速獲取有關域的一些基本DNS信息。 (可以像LeafDNS或IntoDNS一樣思考,但我可以從CLI快速運行。)今天,一位同事給了我完成腳本所需的最後一部分,即如何獲取指向域的名稱服務器(及其IP)據域名註冊商vís-a-vísdig +trace +additional
報告。需要提取兩個空行之間的文本塊
然而,問題是dig +trace +additional
返回了大量額外的信息,我既不想也不需要。在返回的四個文本塊(用空行分隔)中,我只需要第三個(前兩個是根域名服務器,TLD的父域名服務器,第四個塊是DNS域中報告的域名服務器)。理想的情況下,我也想省略挖掘到第三塊文本末尾的評論,只有名稱服務器和它們的IP。
我確實發現this作爲一種解決方案,通過管道挖sed的輸出,但我只是模糊地熟悉sed。當我直接拷貝sed命令時,我得到第一個和第三個塊。下面是輸出的一個例子:
[email protected]:~ $ dig +trace +additional dragon-architect.com | sed '/^$/,/^$/!d'
; <<>> DiG 9.7.3-P3 <<>> +trace +additional dragon-architect.com
;; global options: +cmd
. 214851 IN NS m.root-servers.net.
. 214851 IN NS a.root-servers.net.
. 214851 IN NS b.root-servers.net.
. 214851 IN NS g.root-servers.net.
. 214851 IN NS j.root-servers.net.
. 214851 IN NS d.root-servers.net.
. 214851 IN NS e.root-servers.net.
. 214851 IN NS f.root-servers.net.
. 214851 IN NS l.root-servers.net.
. 214851 IN NS c.root-servers.net.
. 214851 IN NS k.root-servers.net.
. 214851 IN NS h.root-servers.net.
. 214851 IN NS i.root-servers.net.
;; Received 228 bytes from 192.168.16.1#53(192.168.16.1) in 18 ms
dragon-architect.com. 172800 IN NS ns1.dragon-architect.com.
dragon-architect.com. 172800 IN NS ns2.dragon-architect.com.
ns1.dragon-architect.com. 172800 IN A 70.84.243.130
ns2.dragon-architect.com. 172800 IN A 70.84.243.131
;; Received 106 bytes from 192.33.14.30#53(b.gtld-servers.net) in 165 ms
[email protected]:~ $
我幾乎失去了這一點,將非常感謝幫助。如果它簡單,優雅,高度便攜,易於閱讀,並附有關於sed命令如何工作的解釋,那麼免費獎勵點可以從中學到。我也願意使用grep或awk;以取得最便攜和可維護的結果爲準。
編輯: 我知道幾個挖掘參數(特別是+ nocomments和+ nostats)。不幸的是,它們不適用於+跟蹤。所以我必須用sed或awk手動刪除統計信息/評論。
編輯2: 此外,它沒有發生,直到我今天所需要的解決方案,以考慮像.co.uk或.com.au頂級域名。我在bbc.co.uk和melbourneit.com.au等幾個域名上運行了dig +trace +additional
,看看這是否改變了輸出,但沒有。四塊輸出仍然返回,這意味着提供的解決方案仍然完全按照預期工作。
這肯定會返回我需要的信息。 :) 謝謝! –