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 |
|
#389 在 命令行工具
每月 124 次下载
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