首頁 >後端開發 >Golang >增強型 CIDR 區塊計算器,具有擴展的 Go 輸入格式

增強型 CIDR 區塊計算器,具有擴展的 Go 輸入格式

Patricia Arquette
Patricia Arquette原創
2025-01-07 12:07:40821瀏覽

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 區塊(例如 11000000101010000000000000000000/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