如何将主机名解析为节点js中的IP地址

Posted

技术标签:

【中文标题】如何将主机名解析为节点js中的IP地址【英文标题】:How to resolve hostname to an ip address in node js 【发布时间】:2016-08-09 22:17:21 【问题描述】:

我需要将hosts文件中定义的主机名解析为对应的IP地址。

例如我的主机文件看起来像这样 - “/etc/hosts”

127.0.0.1    ggns2dss81 localhost.localdomain localhost
::1     localhost6.localdomain6 localhost6
192.168.253.8    abcdserver
192.168.253.20   testwsserver

现在在我的node.js 中,我可以读取此文件的内容,但我需要获取给定的hostname

hostname = "testwsserver"
hostIP = getIP(hostname);
console.log(hostIP); // This should print 192.168.253.20

PS - npm pkg 或任何第三方软件包无法安装在机器上。

非常感谢您的帮助!

【问题讨论】:

【参考方案1】:

NodeJS documentation - DNS 怎么样 - 你检查了吗?

const dns = require('dns')

dns.lookup('testwsserver', function(err, result) 
  console.log(result)
)

【讨论】:

【参考方案2】:

只是以 Krzysztof Safjanowski 的回答为基础,

您还可以使用内置的 promisify 实用程序将其转换为 Promise 而不是回调。

const util = require('util');
const dns = require('dns');
const lookup = util.promisify(dns.lookup);

try 
  result = await lookup('google.com')
  console.log(result)
 catch (error) 
  console.error(error)

【讨论】:

dns 模块已经有Promise support built-in 时有点多余:) 只需const lookup = require('dns').promises

以上是关于如何将主机名解析为节点js中的IP地址的主要内容,如果未能解决你的问题,请参考以下文章

将ip解析为主机名

将主机名解析为 IP 地址

sql SQL获取主机名以将其解析为IP地址

ping IP通 ping 主机名不通 如何解决?

主机名未解析为 IP WHM/cPanel

如何解析 AWS EC2 的主机名