Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to resolve hostname to an ip address in node js

I need to resolve hostname defined in hosts file to its corresponding IP address.

For example my host file look like this - "/etc/hosts"

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

Now in my node.js, i can read content of this file, but i need to fetch for given hostname.

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

PS - npm pkg or any third party package cannot be installed on machine.

Help is much appreciated!!

like image 487
Abhilash Kant Avatar asked Apr 18 '16 08:04

Abhilash Kant


2 Answers

How about NodeJS documentation - DNS – have you checked it?

const dns = require('dns')

dns.lookup('testwsserver', function(err, result) {
  console.log(result)
})
like image 146
Krzysztof Safjanowski Avatar answered Sep 25 '22 03:09

Krzysztof Safjanowski


Just to build on Krzysztof Safjanowski's answer,

you can also use the builtin promisify utility to convert it to a promise rather than a callback.

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)
}
like image 25
Ben Winding Avatar answered Sep 25 '22 03:09

Ben Winding