Table des matières
Caractéristiques
Traitement des entrées
Opérations CIDR
Gestion des sorties
Installation
Utilisation
1. Mode de saisie standard
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

Jan 07, 2025 pm 12:07 PM

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
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
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
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
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
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

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>
Copier après la connexion
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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"
]
Copier après la connexion

L'agrégation suit avec :

git clone [repository-url]
cd [repository-name]
go build
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

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>
Copier après la connexion
Copier après la connexion

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelles sont les vulnérabilités de Debian OpenSSL Quelles sont les vulnérabilités de Debian OpenSSL Apr 02, 2025 am 07:30 AM

OpenSSL, en tant que bibliothèque open source largement utilisée dans les communications sécurisées, fournit des algorithmes de chiffrement, des clés et des fonctions de gestion des certificats. Cependant, il existe des vulnérabilités de sécurité connues dans sa version historique, dont certaines sont extrêmement nocives. Cet article se concentrera sur les vulnérabilités et les mesures de réponse communes pour OpenSSL dans Debian Systems. DebianopenSSL CONNUTS Vulnérabilités: OpenSSL a connu plusieurs vulnérabilités graves, telles que: la vulnérabilité des saignements cardiaques (CVE-2014-0160): cette vulnérabilité affecte OpenSSL 1.0.1 à 1.0.1F et 1.0.2 à 1.0.2 Versions bêta. Un attaquant peut utiliser cette vulnérabilité à des informations sensibles en lecture non autorisées sur le serveur, y compris les clés de chiffrement, etc.

Transformant du développement frontal au développement back-end, est-il plus prometteur d'apprendre Java ou Golang? Transformant du développement frontal au développement back-end, est-il plus prometteur d'apprendre Java ou Golang? Apr 02, 2025 am 09:12 AM

Chemin d'apprentissage du backend: le parcours d'exploration du front-end à l'arrière-end en tant que débutant back-end qui se transforme du développement frontal, vous avez déjà la base de Nodejs, ...

Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Apr 02, 2025 pm 02:06 PM

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

Quel est le problème avec le fil de file d'attente dans GO's Crawler Colly? Quel est le problème avec le fil de file d'attente dans GO's Crawler Colly? Apr 02, 2025 pm 02:09 PM

Problème de threading de file d'attente dans Go Crawler Colly explore le problème de l'utilisation de la bibliothèque Crawler Crawler dans le langage Go, les développeurs rencontrent souvent des problèmes avec les threads et les files d'attente de demande. � ...

Comment spécifier la base de données associée au modèle de Beego ORM? Comment spécifier la base de données associée au modèle de Beego ORM? Apr 02, 2025 pm 03:54 PM

Dans le cadre du cadre de beegoorm, comment spécifier la base de données associée au modèle? De nombreux projets Beego nécessitent que plusieurs bases de données soient opérées simultanément. Lorsque vous utilisez Beego ...

Dans Go, pourquoi les chaînes d'impression avec println et string () ont-elles des effets différents? Dans Go, pourquoi les chaînes d'impression avec println et string () ont-elles des effets différents? Apr 02, 2025 pm 02:03 PM

La différence entre l'impression de chaîne dans le langage go: la différence dans l'effet de l'utilisation de fonctions println et string () est en Go ...

Comment résoudre le problème de conversion de type user_id lors de l'utilisation du flux redis pour implémenter les files d'attente de messages dans le langage Go? Comment résoudre le problème de conversion de type user_id lors de l'utilisation du flux redis pour implémenter les files d'attente de messages dans le langage Go? Apr 02, 2025 pm 04:54 PM

Le problème de l'utilisation de Redessstream pour implémenter les files d'attente de messages dans le langage GO consiste à utiliser le langage GO et redis ...

Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Apr 02, 2025 pm 05:09 PM

Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Lorsque vous utilisez Goland pour le développement du langage GO, de nombreux développeurs rencontreront des balises de structure personnalisées ...

See all articles