【问题标题】:How to get the netmask of a device in bash using `ip`? [duplicate]如何使用`ip`在bash中获取设备的网络掩码? [复制]
【发布时间】:2018-05-28 19:41:44
【问题描述】:

我正在编写一个 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 中最轻松地将网络掩码的未屏蔽位更改为零?

【问题讨论】:

标签: bash netmask


【解决方案1】:

正如 cmets 中提到的,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

【讨论】:

    猜你喜欢
    • 2011-10-31
    • 2013-03-03
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 2015-02-11
    • 2016-12-07
    • 2016-01-14
    • 1970-01-01
    相关资源
    最近更新 更多