2017-01-16 61 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