2017-01-16 54 views
0

我在dnsruby gem的官方文檔中找不到任何東西,所以我會在這裏問:是否有機會獲得解析版本的dnsruby輸出,特別是一個記錄?dnsruby gem:獲取解析版本的dnsruby輸出

當我執行:

def find_domain self.domain_name = Reversed.lookup(self.ip_address) res = Resolver.new a_recs = res.query(self.domain_name) # Defaults to A record end

a_recs的輸出是一個很長的字符串,例如:

;;從192.168.178.1(75字節)收到的答覆;; ;;安全級別:UNCHECKED ;; - >> HEADER < < - 操作碼:QUERY,狀態:NOERROR,ID:59802 ;; flags:qr rd ra cd; QUERY:1,ANSWER:1,AUTHORITY:0,ADDITIONAL:1 OPT僞記錄:payloadsize 512,xrcode 0,version 0,flags 32768 ;;問題部分(1記錄);; google-public-dns-b.google.com。在一個 ;;答案部分(1條記錄)google-public-dns-b.google.com。 86399 IN A 8.8.4.4

我只需要IP地址(本例中爲8.8.4.4)本身,而不是我查詢的完整答案。有解決方案嗎?我想避免這樣做「骯髒」的方式..在此先感謝!

+1

沒有對這個寶石做過任何研究,我的傾向是正則表達式匹配來自響應的IPV4地址。你有沒有試過它附帶的演示程序? https://github.com/alexdalitz/dnsruby/tree/master/demo – JLB

回答

0

我將整個字符串與.split分隔成單個單詞並將值保存到數組中。然後,我將循環瀏覽它們並選擇最後一個值。像這樣的東西(注測試):

a_recs = res.query(self.domain_name).split 

a_recs.each do |ip| 
a_recs = ip 
end 

當通過數組的最後一個值被覆蓋掉了,因此最後一個(在我的情況下,IP地址8.8.4.4)迭代應保存到a_recs