Obtener la dirección IP local en Node.js
Tengo un programa Node.js simple ejecutándose en mi máquina y quiero obtener la dirección IP local de una PC en la que se ejecuta mi programa. ¿Cómo lo consigo con Node.js?
Aceptado
Esta información se puede encontrar en os.networkInterfaces()
, un objeto que asigna nombres de interfaces de red a sus propiedades (de modo que una interfaz pueda, por ejemplo, tener varias direcciones):
'use strict';
const { networkInterfaces } = require('os');
const nets = networkInterfaces();
const results = Object.create(null); // Or just '{}', an empty object
for (const name of Object.keys(nets)) {
for (const net of nets[name]) {
// Skip over non-IPv4 and internal (i.e. 127.0.0.1) addresses
// 'IPv4' is in Node <= 17, from 18 it's a number 4 or 6
const familyV4Value = typeof net.family === 'string' ? 'IPv4' : 4
if (net.family === familyV4Value && !net.internal) {
if (!results[name]) {
results[name] = [];
}
results[name].push(net.address);
}
}
}
// 'results'
{
"en0": [
"192.168.1.101"
],
"eth0": [
"10.0.0.101"
],
"<network name>": [
"<ip>",
"<ip alias>",
"<ip alias>",
...
]
}
// results["en0"][0]
"192.168.1.101"
Esto es lo que uso.
require('dns').lookup(require('os').hostname(), function (err, add, fam) {
console.log('addr: ' + add);
})
Esto debería devolver la dirección IP local de su primera interfaz de red.