#ip-address #convert #integer #string #hex #ipv4 #ipv4-address

程序 ripcal

将 IP 地址字符串转换为整数,或将整数转换为 IP 地址字符串

4 个版本 (2 个破坏性更新)

0.6.1 2024 年 7 月 14 日
0.6.0 2024 年 5 月 13 日
0.5.2 2024 年 4 月 18 日
0.4.0 2023 年 8 月 11 日
0.1.0 2023 年 7 月 3 日

#389命令行工具

Download history 90/week @ 2024-04-19 122/week @ 2024-05-10 36/week @ 2024-05-17 5/week @ 2024-05-24 2/week @ 2024-06-14 11/week @ 2024-07-05 114/week @ 2024-07-12 7/week @ 2024-07-19 3/week @ 2024-07-26

每月 124 次下载

GPL-2.0 许可证

21KB
423

ripcal

将点分十进制 IP 地址转换为整数,或将整数转换为点分十进制 IP 地址。此外,将 IP 子网转换为 IP 地址范围

    ripcal [-i | -x | -q ] [-r] <ip-address>...
            Converts each <ip-address> to different formats
            If no option is provided then ip-quads will be
            converted to hexa-decimal integers and all
            integers will be converted to ipv4 dotted quads.

    Options:
            --integer or -i
                    Converts to a deca-decimal integer
            --hex or -x
                    Converts to a hexa-decimal integer
            --ipv4 or -q
                    Converts to an ip-quad
            --reverse-bytes or -r
                    Reverses the byte order

    ripcal <ip-addr/subnet> | "<ip-start - ip-end>"
            ip-addr/subnet will be converted to the corresponding
            ip-range ("start - end"). "start - end" (ip-range)
            will be converted to the minimal ip-addr/subnet which
            covers the given range.

    ripcal <ip-addr/subnet> | "<ip-start - ip-end>"
            ip-addr/subnet will be converted to ip-range ("start - end").
            "start_ip - end_ip" (ip-range) will be converted to minimal
            ip-addr/subnet which covers the given range.

    ripcal -m <ip-addr/subnet> | "<ip-start - ip-end>"
            Merge overlapping subnets and/or ip-ranges and print a minimal
            set of ip-ranges (and subnets) that cover all the input
            ip-ranges (and/or) subnets.

    ripcal -h or ripcal --help
            displays this help

    ripcal --version
            displays the program version\n"

将每个

  • 从点分十进制转换为十六进制整数
  • 从十六进制/十进制整数转换为点分十进制

将 ip-address/subnet 表示转换为 ip-address 范围

示例

    $ ripcal 192.168.2.4 0xc0a80204 3232236036
    192.168.2.4 = 0xc0a80204
    0xc0a80204 = 192.168.2.4
    3232236036 = 192.168.2.4

    $ ripcal -q 192.168.2.4 0xc0a80204 3232236036
    192.168.2.4 = 192.168.2.4
    0xc0a80204 = 192.168.2.4
    3232236036 = 192.168.2.4

    $ ripcal -x 192.168.2.4 0xc0a80204 3232236036
    192.168.2.4 = 0xc0a80204
    0xc0a80204 = 0xc0a80204
    3232236036 = 0xc0a80204

    $ ripcal -i 192.168.2.4 0xc0a80204 3232236036
    192.168.2.4 = 3232236036
    0xc0a80204 = 3232236036
    3232236036 = 3232236036

    $ ripcal 0xc0a80204 -r 0xc0a80204
    0xc0a80204 = 192.168.2.4
    Reverse 0xc0a80204 = 4.2.168.192

    $ ripcal 64420102 0x64420102
    64420102 = 3.214.249.6
    0x64420102 = 100.66.1.2

    $ ripcal 0xa141e28 a141e28
    0xa141e28 = 10.20.30.40
    a141e28 = 10.20.30.40

    $ ripcal 192.168.1.0/24
    192.168.1.0/24 = 192.168.1.0/24
    192.168.1.0/24 = 192.168.1.0 - 192.168.1.255

    $ ripcal "192.168.1.1 - 192.168.1.127"
    192.168.1.1 - 192.168.1.127 = 192.168.1.0/25
    192.168.1.0/25 = 192.168.1.0 - 192.168.1.127

注意1: "192.168.1.1 - 192.168.1.127" 转换为 "192.168.1.0 - 192.168.1.127",因为给定的输入不能表示为精确的子网。因此,输入被转换为最小封装子网(192.168.1.0/25)

注意2:IP 地址范围 ("192.168.1.1 - 192.168.1.127") 两侧的引号是必需的,因为 IP 地址之间有空格。作为替代,192.168.1.1-192.168.1.127,没有空格,将不使用引号也能工作。

    $ ripcal -m "192.168.1.1 - 192.168.1.127"
    [192.168.1.1 - 192.168.1.127]
    [192.168.1.1/32, 192.168.1.2/31, 192.168.1.4/30, 192.168.1.8/29, 192.168.1.16/28, 192.168.1.32/27, 192.168.1.64/26]

    $ ripcal -m "192.168.2.3 - 192.168.2.255" 192.168.3.0/24 192.168.2.0-192.168.2.2
    [192.168.2.0 - 192.168.3.255]
    [192.168.2.0/23]

    $ ripcal -m "192.168.1.0 - 192.168.1.255" "192.168.3.0 - 192.168.3.255"
    [192.168.1.0 - 192.168.1.255, 192.168.3.0 - 192.168.3.255]
    [192.168.1.0/24, 192.168.3.0/24]

在命令行上没有给出 ip-address 参数时,程序将从 stdin 读取并写入 stdout(过滤器模式)。

    $ ripcal
    1.2.3.4
    0x1020304
    3232236036
    192.168.2.4
    ^D

    $ echo "192.168.2.3" | ripcal
    0xc0a80203

在过滤器模式下,命令期望每行只有一个 IP 地址。以下命令不会按预期工作

    $ ripcal <<<"192.168.2.3 192.168.3.2"
    Invaid IP address: 192.168.2.3 192.168.3.2

    $ echo "192.168.2.3 192.168.3.2" | ripcal
    Invaid IP address: 192.168.2.3 192.168.3.2

无运行时依赖