2011-10-15 7 views
7

Soy nuevo en el nodo y estoy pirateando una aplicación de nodo que utiliza node_pcap para capturar datos de paquetes y hacer cosas interesantes con él. Una de las entradas para capturar datos es la interfaz de red para escuchar, es decir, "eth0".Recuperar una lista de interfaces de red en node.js (ioctl SIOCGIFCONF)

Pensé que sería genial si pudiera buscar mediante programación las interfaces disponibles en el sistema y presentarlas al usuario del programa y permitirles elegir qué interfaz escuchar. En C, usaría ioctl (o ioctlsocket con winsock) usando SIOCGIFCONF.

Mi pregunta es, ¿existe actualmente un mecanismo para hacer esto en el nodo? He buscado bastante y no he llegado a ninguna de esas soluciones.

Si esta funcionalidad no existe actualmente, asumiría que podría escribir un enlace de Módulo en C/C++ usando ioctl para lograr esto.

¡Gracias por su tiempo!

Respuesta

11

Como de Node.js 0.6.0 tiene

require('os').getNetworkInterfaces() 

Ver http://nodejs.org/docs/latest/api/os.html#os.getNetworkInterfaces

+0

Excelente! Esto es exactamente lo que necesito. Tendré que asegurarme de revisar los documentos de la API la próxima vez antes de hacer una pregunta como esta. Gracias por responder :). – weak

+4

Es 'os.networkInterfaces()' ahora – Vicary

+0

http://nodejs.org/api/os.html para complementar –

0

Si desea enumerar sólo el nombre de interfaces:

Object.keys(os.getNetworkInterfaces()) 
    // [ 'lo0', 'en0', 'en3', 'awdl0' ] 
0

os.networkInterfaces() método devuelve un objeto que contiene solo interfaces de red a las que se ha asignado una dirección de red, pero si queremos todas las tarjetas de red en la máquina, podemos utilizar este método

var shell = require('shelljs'); 

var interfaceCard = shell.ls('/sys/class/net'); 

este interfaceCard lista de todas las interfaces de red tiene

salida será

[ 'eth0', 
'eth1', 
'lo', 
stdout: 'eth0\neth1\nlo\n', 
    stderr: null, 
code: 0, 
cat: [Function: bound ], 
exec: [Function: bound ], 
grep: [Function: bound ], 
head: [Function: bound ], 
sed: [Function: bound ], 
sort: [Function: bound ], 
tail: [Function: bound ], 
    to: [Function: bound ], 
toEnd: [Function: bound ], 
uniq: [Function: bound ] ] 

interfaceCard=interfaceCard.stdout.split('\n'); 

interfaceCard = eth0, eth1, lo 
Cuestiones relacionadas