os.networkInterfaces()
1. 前言
本系列课程对非功能性函数内容安排中,将插入一些在生产过程中可能会用到对应函数的例子。
本节课将会引导大家学习了解:
os.networkInterfaces()
的使用方法os.networkInterfaces()
在生产中的作用
学习完本节课程后,应该具有:
- 使用
os
模块获取当前设备已分配了网络地址的网络接口的能力
2. os.networkInterfaces()
os.networkInterfaces()
可以获取当前设备已分配了网络地址的网络接口。
2.1 参数列表
参数名 | 参数类型 | 含义 |
---|---|---|
address | 分配的 IPv4 或 IPv6 地址 | |
netmask | IPv4 或 IPv6 的子网掩码 | |
family | IPv4 或 IPv6 | |
mac | 网络接口的 MAC 地址 | |
internal | 如果网络接口是不可远程访问的环回接口或类似接口,则为 true,否则为 false | |
scopeid | IPv6 作用域 ID(仅当 family 为 IPv6 时存在) | |
cidr | CIDR 表示法分配的带有路由前缀的 IPv4 或 IPv6 地址。如果 netmask 无效,则此属性会被设为 null |
2.2 代码例子
我们先来执行下面这段代码:
js
// 引入 os 模块
const os = require('os');
// 打印结果
console.log(os.networkInterfaces());
结果:
shell
{ '以太网 2':
[ { address: 'fe80::10f9:f005:bc53:f8be',
netmask: 'ffff:ffff:ffff:ffff::',
family: 'IPv6',
mac: '00:16:3e:08:a5:f0',
scopeid: 13,
internal: false,
cidr: 'fe80::10f9:f005:bc53:f8be/64' },
{ address: '172.16.55.128',
netmask: '255.255.192.0',
family: 'IPv4',
mac: '00:16:3e:08:a5:f0',
internal: false,
cidr: '172.16.55.129/18' } ],
'Loopback Pseudo-Interface 1':
[ { address: '::1',
netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
family: 'IPv6',
mac: '00:00:00:00:00:00',
scopeid: 0,
internal: true,
cidr: '::1/128' },
{ address: '127.0.0.1',
netmask: '255.0.0.0',
family: 'IPv4',
mac: '00:00:00:00:00:00',
internal: true,
cidr: '127.0.0.1/8' } ] }
我们可以看到,返回的对象中,键名是 连接名 ,如果是 windows
系统,可以到 控制面板 > 网络和 Internet 查看。
如果是 macos
或其它 linux
系统,会出现以 en
、eth
、lo
开头。其中 lo
为 本地环回 。其含义和上面用 windows
打印的 Loopback Pseudo-Interface 1
一样。通常其 IPv4
与 IPv6
分别为 172.0.0.1
和 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
。
3 生产中的作用
-
用法一:
用于获取当前设备的 IP 信息 和 子网掩码,在一些需要监控服务器网络信息的系统中使用。
这里也推荐一个实用性和方便性挺高的一个第三方库:ip
Tips:如果仅仅需要获取一些简单信息,没有必要用到库,也对项目轻量化起到一点作用。
4. 小结
本节课程我们主要学习了 os.networkInterfaces()及其在生产上的用法。
重点如下:
-
重点1
os.networkInterfaces()
能获取当前设备一些网络信息。