f=require("socket")print(f.dns.tohostname('8.8.8.8'))google-public-dns-a.google.com table: 0x7f9a33d01cb0以上功能 获取 hostname ,怎么实现 除 linux 命令 host, 第3方的 socket 库外, 最好是 春哥大神写的库。
Hi!nginx 有个变量 $hostname 的,你可以通过ngx.var.hostname 来获取,不过有使用阶段限制(没法在 init_by_lua 和 init_worker_by_lua 使用)如果你想要在这两个阶段使用,建议你使用 ffi,自己调用 gethostname。On Tuesday, August 8, 2017 at 4:52:35 PM UTC+8, g_l...@qq.com wrote:f=require("socket")print(f.dns.tohostname('8.8.8.8'))google-public-dns-a.google.com table: 0x7f9a33d01cb0以上功能 获取 hostname ,怎么实现 除 linux 命令 host, 第3方的 socket 库外, 最好是 春哥大神写的库。 --
Hi!nginx 有个变量 $hostname 的,你可以通过ngx.var.hostname 来获取,不过有使用阶段限制(没法在 init_by_lua 和 init_worker_by_lua 使用)如果你想要在这两个阶段使用,建议你使用 ffi,自己调用 gethostname。On Tuesday, August 8, 2017 at 4:52:35 PM UTC+8, g_l...@qq.com wrote:f=require("socket")print(f.dns.tohostname('8.8.8.8'))google-public-dns-a.google.com table: 0x7f9a33d01cb0以上功能 获取 hostname ,怎么实现 除 linux 命令 host, 第3方的 socket 库外, 最好是 春哥大神写的库。
https://github.com/openresty/lua-resty-dns#reverse_queryg_linux是要的这个么?ip -> hostname逆解析 完全异步的cosocket实现2017-08-09 9:36 GMT+08:00 tokers <zcha...@gmail.com>:Hi!nginx 有个变量 $hostname 的,你可以通过ngx.var.hostname 来获取,不过有使用阶段限制(没法在 init_by_lua 和 init_worker_by_lua 使用)如果你想要在这两个阶段使用,建议你使用 ffi,自己调用 gethostname。On Tuesday, August 8, 2017 at 4:52:35 PM UTC+8, g_l...@qq.com wrote:f=require("socket")print(f.dns.tohostname('8.8.8.8'))google-public-dns-a.google.com table: 0x7f9a33d01cb0以上功能 获取 hostname ,怎么实现 除 linux 命令 host, 第3方的 socket 库外, 最好是 春哥大神写的库。 --
local resolver = require "resty.dns.resolver" local ptr4 = resolver.arpa_str("1.2.3.4")
这个我昨天测试过了。。不能达到我的要求。。和 host 命令出来的效果 区别很大。
我只获取 客服端的主机名字。
syntax: answers, err = r:reverse_query(address)
哥哥 local resolver = require "resty.dns.resolver" local ptr4 = resolver.arpa_str("1.2.3.4")这个我昨天测试过了。。不能达到我的要求。。和 host 命令出来的效果 区别很大。我只获取 客服端的主机名字。在 2017年8月9日星期三 UTC+8上午9:47:01,yunthanatos写道:https://github.com/openresty/lua-resty-dns#reverse_queryg_linux是要的这个么?ip -> hostname逆解析 完全异步的cosocket实现2017-08-09 9:36 GMT+08:00 tokers <zcha...@gmail.com>:Hi!nginx 有个变量 $hostname 的,你可以通过ngx.var.hostname 来获取,不过有使用阶段限制(没法在 init_by_lua 和 init_worker_by_lua 使用)如果你想要在这两个阶段使用,建议你使用 ffi,自己调用 gethostname。On Tuesday, August 8, 2017 at 4:52:35 PM UTC+8, g_l...@qq.com wrote:f=require("socket")print(f.dns.tohostname('8.8.8.8'))google-public-dns-a.google.com table: 0x7f9a33d01cb0以上功能 获取 hostname ,怎么实现 除 linux 命令 host, 第3方的 socket 库外, 最好是 春哥大神写的库。 -- --
按照文档所述,应该使用reverse_query方法:syntax: answers, err = r:reverse_query(address)arpa_str只是格式化生成了PTR查询时的ip逆解析域名。2017-08-09 9:51 GMT+08:00 <g_l...@qq.com>:哥哥 local resolver = require "resty.dns.resolver" local ptr4 = resolver.arpa_str("1.2.3.4")这个我昨天测试过了。。不能达到我的要求。。和 host 命令出来的效果 区别很大。我只获取 客服端的主机名字。在 2017年8月9日星期三 UTC+8上午9:47:01,yunthanatos写道:https://github.com/openresty/lua-resty-dns#reverse_queryg_linux是要的这个么?ip -> hostname逆解析 完全异步的cosocket实现2017-08-09 9:36 GMT+08:00 tokers <zcha...@gmail.com>:Hi!nginx 有个变量 $hostname 的,你可以通过ngx.var.hostname 来获取,不过有使用阶段限制(没法在 init_by_lua 和 init_worker_by_lua 使用)如果你想要在这两个阶段使用,建议你使用 ffi,自己调用 gethostname。On Tuesday, August 8, 2017 at 4:52:35 PM UTC+8, g_l...@qq.com wrote:f=require("socket")print(f.dns.tohostname('8.8.8.8'))google-public-dns-a.google.com table: 0x7f9a33d01cb0以上功能 获取 hostname ,怎么实现 除 linux 命令 host, 第3方的 socket 库外, 最好是 春哥大神写的库。 -- --
您未获授权,无法查看此网页。
print_r dump:+1+section [1] <number> +ptrdname [google-public-dns-a.google.com] <string> +type [12] <number> +class [1] <number> +name [8.8.8.8.in-addr.arpa] <string> +ttl [86399] <number>
哥哥您未获授权,无法查看此网页。HTTP ERROR 403body_filter_by_lua_block{local resolver = require "resty.dns.resolver"answers, err = resolver:reverse_query('8.8.8.8')ngx.arg[1]=answers}在 2017年8月9日星期三 UTC+8上午10:04:17,yunthanatos写道:按照文档所述,应该使用reverse_query方法:syntax: answers, err = r:reverse_query(address)arpa_str只是格式化生成了PTR查询时的ip逆解析域名。2017-08-09 9:51 GMT+08:00 <g_l...@qq.com>:哥哥 local resolver = require "resty.dns.resolver" local ptr4 = resolver.arpa_str("1.2.3.4")这个我昨天测试过了。。不能达到我的要求。。和 host 命令出来的效果 区别很大。我只获取 客服端的主机名字。在 2017年8月9日星期三 UTC+8上午9:47:01,yunthanatos写道:https://github.com/openresty/lua-resty-dns#reverse_queryg_linux是要的这个么?ip -> hostname逆解析 完全异步的cosocket实现2017-08-09 9:36 GMT+08:00 tokers <zcha...@gmail.com>:Hi!nginx 有个变量 $hostname 的,你可以通过ngx.var.hostname 来获取,不过有使用阶段限制(没法在 init_by_lua 和 init_worker_by_lua 使用)如果你想要在这两个阶段使用,建议你使用 ffi,自己调用 gethostname。On Tuesday, August 8, 2017 at 4:52:35 PM UTC+8, g_l...@qq.com wrote:f=require("socket")print(f.dns.tohostname('8.8.8.8'))google-public-dns-a.google.com table: 0x7f9a33d01cb0以上功能 获取 hostname ,怎么实现 除 linux 命令 host, 第3方的 socket 库外, 最好是 春哥大神写的库。 -- -- --
local function print_r(root,func) local cache = { [root] = "." } local function _dump(t,space,name) local temp = {} for k,v in pairs(t) do local key = tostring(k) if cache[v] then table.insert(temp,"+" .. key .. " {" .. cache[v].."}") elseif type(v) == "table" then local new_key = name .. "." .. key cache[v] = new_key table.insert(temp,"+" .. key .. _dump(v,space .. (next(t,k) and "|" or " " ).. string.rep(" ",#key),new_key)) else local str=tostring(v) --str=string.gsub(str,'\n','\\n') --table.insert(temp,"+" .. key .. " [" .. str .."]") table.insert(temp,"+" .. key .. " [" .. str .."]".." <"..type(v)..">") end end return table.concat(temp,"\n"..space) end if type(func)=="function" then func("print_r dump:\n".._dump(root, "","")) else print("print_r dump:\n".._dump(root, "","")) endend
local resolver = require "resty.resolver"local r, err = resolver:new{ nameservers = { "8.8.8.8" }}if not r then ngx.say("failed to instantiate resolver: ", err) returnendanswers, err = r:reverse_query("8.8.8.8")if type(answers)=="table" then print_r(answers,ngx.say)endngx.say(tostring(err))
刚才测试了下,这个功能是没有问题的,能够正常逆解析。(lua-resty-dns v0.19)$ answers, err = r:reverse_query("8.8.8.8")print_r dump:+1+section [1] <number> +ptrdname [google-public-dns-a.google.com] <string> +type [12] <number> +class [1] <number> +name [8.8.8.8.in-addr.arpa] <string> +ttl [86399] <number>2017-08-09 10:16 GMT+08:00 <g_l...@qq.com>:哥哥您未获授权,无法查看此网页。HTTP ERROR 403body_filter_by_lua_block{local resolver = require "resty.dns.resolver"answers, err = resolver:reverse_query('8.8.8.8')ngx.arg[1]=answers}在 2017年8月9日星期三 UTC+8上午10:04:17,yunthanatos写道:按照文档所述,应该使用reverse_query方法:syntax: answers, err = r:reverse_query(address)arpa_str只是格式化生成了PTR查询时的ip逆解析域名。2017-08-09 9:51 GMT+08:00 <g_l...@qq.com>:哥哥 local resolver = require "resty.dns.resolver" local ptr4 = resolver.arpa_str("1.2.3.4")这个我昨天测试过了。。不能达到我的要求。。和 host 命令出来的效果 区别很大。我只获取 客服端的主机名字。在 2017年8月9日星期三 UTC+8上午9:47:01,yunthanatos写道:https://github.com/openresty/lua-resty-dns#reverse_queryg_linux是要的这个么?ip -> hostname逆解析 完全异步的cosocket实现2017-08-09 9:36 GMT+08:00 tokers <zcha...@gmail.com>:Hi!nginx 有个变量 $hostname 的,你可以通过ngx.var.hostname 来获取,不过有使用阶段限制(没法在 init_by_lua 和 init_worker_by_lua 使用)如果你想要在这两个阶段使用,建议你使用 ffi,自己调用 gethostname。On Tuesday, August 8, 2017 at 4:52:35 PM UTC+8, g_l...@qq.com wrote:f=require("socket")print(f.dns.tohostname('8.8.8.8'))google-public-dns-a.google.com table: 0x7f9a33d01cb0以上功能 获取 hostname ,怎么实现 除 linux 命令 host, 第3方的 socket 库外, 最好是 春哥大神写的库。 -- -- --
可以追查下你那儿的所有异常情况,以便定位出程序问题所在。另外,函数返回的err都是需要认真处理的。最小测试用例:local function print_r(root,func) local cache = { [root] = "." } local function _dump(t,space,name) local temp = {} for k,v in pairs(t) do local key = tostring(k) if cache[v] then table.insert(temp,"+" .. key .. " {" .. cache[v].."}") elseif type(v) == "table" then local new_key = name .. "." .. key cache[v] = new_key table.insert(temp,"+" .. key .. _dump(v,space .. (next(t,k) and "|" or " " ).. string.rep(" ",#key),new_key)) else local str=tostring(v) --str=string.gsub(str,'\n','\\n') --table.insert(temp,"+" .. key .. " [" .. str .."]") table.insert(temp,"+" .. key .. " [" .. str .."]".." <"..type(v)..">") end end return table.concat(temp,"\n"..space) end if type(func)=="function" then func("print_r dump:\n".._dump(root, "","")) else print("print_r dump:\n".._dump(root, "","")) endend local resolver = require "resty.resolver"local r, err = resolver:new{ nameservers = { "8.8.8.8" }}if not r then ngx.say("failed to instantiate resolver: ", err) returnendanswers, err = r:reverse_query("8.8.8.8")if type(answers)=="table" then print_r(answers,ngx.say)endngx.say(tostring(err))2017-08-09 10:23 GMT+08:00 Sen Han <yunth...@gmail.com>:刚才测试了下,这个功能是没有问题的,能够正常逆解析。(lua-resty-dns v0.19)$ answers, err = r:reverse_query("8.8.8.8")print_r dump:+1+section [1] <number> +ptrdname [google-public-dns-a.google.com] <string> +type [12] <number> +class [1] <number> +name [8.8.8.8.in-addr.arpa] <string> +ttl [86399] <number>2017-08-09 10:16 GMT+08:00 <g_l...@qq.com>:哥哥您未获授权,无法查看此网页。HTTP ERROR 403body_filter_by_lua_block{local resolver = require "resty.dns.resolver"answers, err = resolver:reverse_query('8.8.8.8')ngx.arg[1]=answers}在 2017年8月9日星期三 UTC+8上午10:04:17,yunthanatos写道:按照文档所述,应该使用reverse_query方法:syntax: answers, err = r:reverse_query(address)arpa_str只是格式化生成了PTR查询时的ip逆解析域名。2017-08-09 9:51 GMT+08:00 <g_l...@qq.com>:哥哥 local resolver = require "resty.dns.resolver" local ptr4 = resolver.arpa_str("1.2.3.4")这个我昨天测试过了。。不能达到我的要求。。和 host 命令出来的效果 区别很大。我只获取 客服端的主机名字。在 2017年8月9日星期三 UTC+8上午9:47:01,yunthanatos写道:https://github.com/openresty/lua-resty-dns#reverse_queryg_linux是要的这个么?ip -> hostname逆解析 完全异步的cosocket实现2017-08-09 9:36 GMT+08:00 tokers <zcha...@gmail.com>:Hi!nginx 有个变量 $hostname 的,你可以通过ngx.var.hostname 来获取,不过有使用阶段限制(没法在 init_by_lua 和 init_worker_by_lua 使用)如果你想要在这两个阶段使用,建议你使用 ffi,自己调用 gethostname。On Tuesday, August 8, 2017 at 4:52:35 PM UTC+8, g_l...@qq.com wrote:f=require("socket")print(f.dns.tohostname('8.8.8.8'))google-public-dns-a.google.com table: 0x7f9a33d01cb0以上功能 获取 hostname ,怎么实现 除 linux 命令 host, 第3方的 socket 库外, 最好是 春哥大神写的库。 -- -- --
body_filter_by_lua_block{local resolver = require "resty.dns.resolver"answers, err = resolver:reverse_query("8.8.8.8")ngx.arg[1]=type(answers)}
body_filter_by_lua_block{local resolver = require "resty.dns.resolver"answers, err = resolver:reverse_query("8.8.8.8")ngx.arg[1]=type(answers)}难道不能放在 body_filter_by_lua_block? --
local resolver = require "resty.resolver"local r, err = resolver:new{ nameservers = { "8.8.8.8" }}if not r then ngx.say("failed to instantiate resolver: ", err) returnendanswers, err = r:reverse_query("8.8.8.8")是因为代码使用有误才会异常... 2017-08-09 10:37 GMT+08:00 <g_l...@qq.com>:body_filter_by_lua_block{local resolver = require "resty.dns.resolver"answers, err = resolver:reverse_query("8.8.8.8")ngx.arg[1]=type(answers)}难道不能放在 body_filter_by_lua_block? --