如何在bash中使用'ip'获取设备的网络掩码?

如何在bash中使用'ip'获取设备的网络掩码?,bash,netmask,Bash,Netmask,我正在编写一个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都将为您提供服务 e、 g

我正在编写一个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都将为您提供服务

e、 g


有第三方工具可以为您实现这一点,尽管它们的包装名称因发行版而异……例如,Red Hat调用的
ipcalc
和Arch Linux调用的
ipcalc
并不是一个相同的工具。您的目标操作系统或发行版是什么,或者您是否需要本机解决方案?这可能会有帮助:
$ 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