如何使用 `ip` 获取 bash 中设备的网络掩码?
How to get the netmask of a device in bash using `ip`?
我正在编写一个 bash 函数来添加如下 ip 路由:
ip route add table 128 to 192.168.1.0/24 dev eno1
要获取当前网络掩码,我可以执行 ip -f inet -o addr show dev eno1
,这会给我一个值,例如 192.168.1.123/24
,但这不被 ip
接受。未屏蔽的位需要为零,例如192.168.1.0/24
.
如何在 bash 中最轻松地将网络掩码的未屏蔽位更改为零?
如评论中所述,ipcalc 或 sipcalc 都会为您完成。
例如
$ ipcalc 192.168.0.1/24
Address: 192.168.0.1 11000000.10101000.00000000. 00000001
Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000
Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111
=>
Network: 192.168.0.0/24 11000000.10101000.00000000. 00000000
HostMin: 192.168.0.1 11000000.10101000.00000000. 00000001
HostMax: 192.168.0.254 11000000.10101000.00000000. 11111110
Broadcast: 192.168.0.255 11000000.10101000.00000000. 11111111
Hosts/Net: 254 Class C, Private Internet
或
$ sipcalc 192.168.0.1/24
-[ipv4 : 192.168.0.1/24] - 0
[CIDR]
Host address - 192.168.0.1
Host address (decimal) - 3232235521
Host address (hex) - C0A80001
Network address - 192.168.0.0
Network mask - 255.255.255.0
Network mask (bits) - 24
Network mask (hex) - FFFFFF00
Broadcast address - 192.168.0.255
Cisco wildcard - 0.0.0.255
Addresses in network - 256
Network range - 192.168.0.0 - 192.168.0.255
Usable range - 192.168.0.1 - 192.168.0.254
我正在编写一个 bash 函数来添加如下 ip 路由:
ip route add table 128 to 192.168.1.0/24 dev eno1
要获取当前网络掩码,我可以执行 ip -f inet -o addr show dev eno1
,这会给我一个值,例如 192.168.1.123/24
,但这不被 ip
接受。未屏蔽的位需要为零,例如192.168.1.0/24
.
如何在 bash 中最轻松地将网络掩码的未屏蔽位更改为零?
如评论中所述,ipcalc 或 sipcalc 都会为您完成。
例如
$ ipcalc 192.168.0.1/24
Address: 192.168.0.1 11000000.10101000.00000000. 00000001
Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000
Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111
=>
Network: 192.168.0.0/24 11000000.10101000.00000000. 00000000
HostMin: 192.168.0.1 11000000.10101000.00000000. 00000001
HostMax: 192.168.0.254 11000000.10101000.00000000. 11111110
Broadcast: 192.168.0.255 11000000.10101000.00000000. 11111111
Hosts/Net: 254 Class C, Private Internet
或
$ sipcalc 192.168.0.1/24
-[ipv4 : 192.168.0.1/24] - 0
[CIDR]
Host address - 192.168.0.1
Host address (decimal) - 3232235521
Host address (hex) - C0A80001
Network address - 192.168.0.0
Network mask - 255.255.255.0
Network mask (bits) - 24
Network mask (hex) - FFFFFF00
Broadcast address - 192.168.0.255
Cisco wildcard - 0.0.0.255
Addresses in network - 256
Network range - 192.168.0.0 - 192.168.0.255
Usable range - 192.168.0.1 - 192.168.0.254