首页 >后端开发 >Golang >增强型 CIDR 块计算器,具有扩展的 Go 输入格式

增强型 CIDR 块计算器,具有扩展的 Go 输入格式

Patricia Arquette
Patricia Arquette原创
2025-01-07 12:07:40820浏览

IP 地址范围的有效管理对于网络工程、云基础设施和网络安全至关重要。 CIDR(无类域间路由)块提供了一种紧凑的方式来表示 IP 地址范围,但手动处理它们可能很麻烦。 CIDR-Converter 是一个基于 Go 的实用程序,旨在简化此过程,同时支持扩展的输入格式。

在这里查看我的存储库:

Enhanced CIDR Block Calculator with Expanded Input Formats in Go 帕特故障 / cidr 转换器

CIDR 块转换器

CIDR 转换

用 Go 编写的命令行实用程序,用于处理、验证和合并各种格式的 IP 地址范围。该工具支持 CIDR 表示法、通配符表示法和多种输入/输出格式。

特点

输入处理

  • 支持多种输入格式:
    • CIDR 表示法(例如“192.168.1.0/24”)
    • 通配符(例如“192.168.1.*”)
    • 包含 CIDR 块的 CSV 文件
    • 包含 CIDR 块的 JSON 文件
  • 用于手动输入的交互式标准输入模式

CIDR 操作

  • 验证 IP 范围和 CIDR 块
  • 将通配符表示法转换为 CIDR 格式
  • 合并重叠的 CIDR 块
  • 对 CIDR 块进行排序以实现最佳组织

输出处理

  • 自动将合并结果保存到 JSON 文件
  • 漂亮打印的 JSON 输出
  • 全面的错误处理和报告

安装

确保您的系统上安装了 Go,然后:

git clone [repository-url]
cd [repository-name]
go build
进入全屏模式 退出全屏模式

用法

该工具支持三种输入模式:

1.标准输入模式

git clone [repository-url]
cd [repository-name]
go build
进入全屏模式 退出全屏模式
在 GitHub 上查看

我还计划创建一个具有附加功能的网络应用程序,以增加应用程序的功能和范围!

这个项目的灵感来自 Andy Walker 的 cidr-convert 存储库。

主要特点

1. 灵活的输入格式

  • 支持传统的 CIDR 表示法(例如 192.168.0.0/24)
  • 解析通配符符号(例如,192.168..
  • 将二进制字符串转换为 CIDR 块(例如 110000001010100000000000000000000/24)
  • 从 CSV 和 JSON 文件读取 CIDR

2. 智能合并

  • 将重叠的 CIDR 合并为最小集,减少冗余
  • 在可行的情况下将较小的子网聚合成较大的子网

3. 文件I/O支持

  • 解析来自文件或标准输入的输入
  • 将合并的 CIDR 保存到 JSON 文件以便于共享和存储

它解决的问题

处理大量 CIDR 列表可能很乏味,尤其是在处理重叠或相邻范围时。手动聚合这些范围很容易出错且耗时。该工具使流程自动化,确保最佳聚合并降低管理不善的风险。

它是如何运作的

核心功能

1.CIDR解析和验证

parseCIDR 函数确保输入符合有效的 CIDR 表示法。

2. 通配符和二进制解析

  • 通过分析掩码长度将通配符(例如 192.168..)转换为 CIDR
  • 二进制字符串(例如 11000000101010000000000000000000/24)被转换为 IP 地址

3.CIDR合并

  • mergeCIDRs 函数通过合并重叠范围来消除冗余
  • aggregateCIDRs 函数将较小的子网组合成更大的、包含的块

4. 文件解析

使用 parseCSV 和 parseJSON 函数从 CSV 和 JSON 格式读取 CIDR。

5、输出

合并的 CIDR 会保存到 JSON 文件中,以便其他工具或团队轻松使用。

用法示例

命令行执行

直接从终端运行该工具,指定输入类型:

git clone [repository-url]
cd [repository-name]
go build

样本输出

给定输入:

./cidr-processor
<span># Enter CIDR blocks interactively, one per line:</span>
192.168.1.0/24
10.0.0.*
<span># Press Ctrl+D (Linux/Mac) or Ctrl+Z (Windows) to</span>

该工具输出单个聚合块:

# Standard input
$ go run main.go
Enter CIDR blocks, one per line. Press Ctrl+D (Linux/Mac) or Ctrl+Z (Windows) to end input:
192.168.0.0/24
192.168.1.0/24

# CSV Input
$ go run main.go input.csv

# JSON Input
$ go run main.go input.json

保存到 merged_cidrs.json。

代码演练

解析通配符表示法

像 192.168.. 这样的通配符会转换为 CIDR:

192.168.0.0/24
192.168.1.0/24

该函数计算适当的前缀长度并构造 CIDR 块。

合并和聚合

mergeCIDRs 函数消除了冗余:

[
  "192.168.0.0/23"
]

聚合如下:

git clone [repository-url]
cd [repository-name]
go build

此步骤将相邻范围合并为更大的块。

文件解析

CSV 和 JSON 输入文件使用 parseCSV 和 parseJSON 进行解析,从而实现与现有工作流程的无缝集成:

./cidr-processor
<span># Enter CIDR blocks interactively, one per line:</span>
192.168.1.0/24
10.0.0.*
<span># Press Ctrl+D (Linux/Mac) or Ctrl+Z (Windows) to</span>

为什么去?

Go 强大的标准库,包括 net、regexp 和 encoding/json 等包,使其成为构建网络相关工具的绝佳选择。其强大的并发模型即使在处理大型数据集时也能确保高性能。

未来的增强功能

1.IPv6支持

  • 扩展功能以处理 IPv6 范围

2. 动态输入格式

  • 添加对 YAML 和 XML 的支持

3. 网页界面

  • 构建用于交互式 CIDR 管理的轻量级 Web 应用程序

结论

增强型 CIDR 块计算器通过扩展的输入格式、智能合并和强大的文件支持简化了 CIDR 管理。其多功能性使其成为网络工程师、云架构师和网络安全专业人员的宝贵工具。受到 Andy Walker 的 cidr-convert 的启发,该工具建立在基本思想的基础上,提供更全面的解决方案。立即尝试并简化您的 CIDR 工作流程!

以上是增强型 CIDR 块计算器,具有扩展的 Go 输入格式的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn