Maison >développement back-end >Golang >Calculateur de blocs CIDR amélioré avec formats d'entrée étendus dans Go

Calculateur de blocs CIDR amélioré avec formats d'entrée étendus dans Go

Patricia Arquette
Patricia Arquetteoriginal
2025-01-07 12:07:40796parcourir

Une gestion efficace des plages d'adresses IP est essentielle dans l'ingénierie des réseaux, l'infrastructure cloud et la cybersécurité. Les blocs CIDR (Classless Inter-Domain Routing) offrent un moyen compact de représenter les plages d'adresses IP, mais leur gestion manuelle peut s'avérer fastidieuse. Entrez le CIDR-Converter, un utilitaire basé sur Go conçu pour simplifier ce processus tout en prenant en charge les formats d'entrée étendus.

Consultez mon dépôt ici :

Enhanced CIDR Block Calculator with Expanded Input Formats in Go pat-glitch / convertisseur cidr

Un convertisseur de blocs CIDR

Conversion CIDR

Un utilitaire de ligne de commande écrit en Go qui traite, valide et fusionne des plages d'adresses IP dans différents formats. L'outil prend en charge la notation CIDR, la notation générique et plusieurs formats d'entrée/sortie.

Caractéristiques

Traitement des entrées

  • Plusieurs formats d'entrée pris en charge :
    • Notation CIDR (par exemple, "192.168.1.0/24")
    • Notation générique (par exemple, "192.168.1.*")
    • Fichiers CSV contenant des blocs CIDR
    • Fichiers JSON contenant des blocs CIDR
  • Mode stdin interactif pour la saisie manuelle

Opérations CIDR

  • Valide les plages IP et les blocs CIDR
  • Convertit la notation générique au format CIDR
  • Fusionne les blocs CIDR qui se chevauchent
  • Trie les blocs CIDR pour une organisation optimale

Gestion des sorties

  • Enregistre automatiquement les résultats fusionnés dans un fichier JSON
  • Sortie JSON joliment imprimée
  • Gestion et reporting complets des erreurs

Installation

Assurez-vous que Go est installé sur votre système, puis :

git clone [repository-url]
cd [repository-name]
go build
Entrez en mode plein écran Quitter le mode plein écran

Utilisation

L'outil prend en charge trois modes de saisie :

1. Mode de saisie standard

git clone [repository-url]
cd [repository-name]
go build
Entrez en mode plein écran Quitter le mode plein écran
Voir sur GitHub

Je prévois également de créer une application Web avec des fonctionnalités supplémentaires, pour augmenter les fonctionnalités et la portée de l'application !

Ce projet a été inspiré par le référentiel cidr-convert d'Andy Walker.

Principales fonctionnalités

1. Formats d'entrée flexibles

  • Prend en charge la notation CIDR traditionnelle (par exemple, 192.168.0.0/24)
  • Analyse les notations génériques (par exemple, 192.168..)
  • Convertit les chaînes binaires en blocs CIDR (par exemple, 11000000101010000000000000000000/24)
  • Lit les CIDR à partir de fichiers CSV et JSON

2. Fusion intelligente

  • Fusionne les CIDR qui se chevauchent en un ensemble minimal, réduisant ainsi la redondance
  • Agrège les sous-réseaux plus petits en sous-réseaux plus grands lorsque cela est possible

3. Prise en charge des E/S de fichiers

  • Analyse les entrées des fichiers ou des entrées standard
  • Enregistre les CIDR fusionnés dans un fichier JSON pour un partage et un stockage faciles

Le problème qu'il résout

La gestion de grandes listes de CIDR peut être fastidieuse, en particulier lorsqu'il s'agit de plages qui se chevauchent ou sont adjacentes. L'agrégation manuelle de ces plages est sujette aux erreurs et prend du temps. Cet outil automatise le processus, garantissant une agrégation optimale et réduisant le risque de mauvaise gestion.

Comment ça marche

Fonctionnalités de base

1. Analyse et validation CIDR

La fonction parseCIDR garantit que l'entrée est conforme à la notation CIDR valide.

2. Analyse générique et binaire

  • Les caractères génériques (par exemple, 192.168..) sont convertis en CIDR en analysant la longueur du masque
  • Les chaînes binaires (par exemple, 11000000101010000000000000000000/24) sont traduites en adresses IP

3. Fusion CIDR

  • La fonction mergeCIDRs supprime la redondance en fusionnant les plages qui se chevauchent
  • La fonction AggregateCIDRs combine des sous-réseaux plus petits en blocs plus grands et englobants

4. Analyse de fichiers

Lit les CIDR à partir des formats CSV et JSON à l'aide des fonctions parseCSV et parseJSON.

5. Sortie

Les CIDR fusionnés sont enregistrés dans un fichier JSON pour une utilisation facile par d'autres outils ou équipes.

Exemple d'utilisation

Exécution en ligne de commande

Exécutez l'outil directement depuis le terminal, en spécifiant le type d'entrée :

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

Exemple de sortie

Compte tenu de la contribution :

./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>

L'outil génère un seul bloc agrégé :

# 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

Enregistré dans merged_cidrs.json.

Procédure pas à pas du code

Analyse de la notation générique

Les caractères génériques comme 192.168.. sont convertis en CIDR :

192.168.0.0/24
192.168.1.0/24

La fonction calcule la longueur de préfixe appropriée et construit un bloc CIDR.

Fusion et agrégation

La fonction mergeCIDRs élimine la redondance :

[
  "192.168.0.0/23"
]

L'agrégation suit avec :

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

Cette étape combine les plages adjacentes en blocs plus grands.

Analyse de fichiers

Les fichiers d'entrée CSV et JSON sont analysés avec parseCSV et parseJSON, permettant une intégration transparente avec les flux de travail existants :

./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>

Pourquoi y aller ?

La bibliothèque standard robuste de Go, comprenant des packages tels que net, regexp et encoding/json, en fait un excellent choix pour créer des outils liés au réseau. Son modèle de concurrence solide garantit des performances élevées, même avec de grands ensembles de données.

Améliorations futures

1. Prise en charge d'IPv6

  • Étendre les fonctionnalités pour gérer les plages IPv6

2. Formats d'entrée dynamiques

  • Ajouter la prise en charge de YAML et XML

3.Interface Internet

  • Créez une application Web légère pour la gestion interactive du CIDR

Conclusion

Le calculateur de bloc CIDR amélioré simplifie la gestion du CIDR avec des formats d'entrée étendus, une fusion intelligente et une prise en charge robuste des fichiers. Sa polyvalence en fait un outil précieux pour les ingénieurs réseau, les architectes cloud et les professionnels de la cybersécurité. Inspiré du cidr-convert d'Andy Walker, cet outil s'appuie sur des idées fondamentales pour offrir une solution plus complète. Essayez-le et rationalisez vos flux de travail CIDR dès aujourd'hui !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn