J'ai pensé à la logique qui divise / 22 ou / 23 en / 24 unités en spécifiant la plage IP en Python.

Quand j'ai entendu le séminaire "Zabbix entièrement automatique" à OSC2015Tokyo / Spring, il a fallu beaucoup de temps pour enregistrer NetArc Discovery dans une large gamme, donc j'ai entendu qu'il vaut mieux s'enregistrer séparément ... Mais, "Il est difficile de calculer la plage et de la diviser" ... Donc, après avoir étudié Python, j'ai réfléchi à la logique de diviser / 22 ou / 23 en 24 unités en spécifiant la plage IP.

C'est la logique de diviser l'IP. Puisqu'il s'agit d'un test logique, les noms de variables sont appropriés. (excuse) C'est en désordre-A (^ _ ^;

import sys

io = sys.argv[1]

tmp = io.split("/")

ip     = tmp[0]
prefix = tmp[1]

tmp = ip.split(".")
o1 = tmp[0]
o2 = tmp[1]
o3 = tmp[2]
o4 = tmp[3]

sum = (int(o1) << 24 | int(o2) << 16 | int(o3) << 8 | int(o4) ) & 0xFFFFFF00
sum = sum >> (32-int(prefix))
sum = sum << (32-int(prefix))

for i in range(0, 2 << (24 - int(prefix) - 1)):
    a = sum | i<<8
    o1 = (a & 0xFF000000) >> 24
    o2 = (a & 0x00FF0000) >> 16
    o3 = (a & 0x0000FF00) >> 8
    o4 = 0

    a = str(o1) + "." + str(o2) + "." + str(o3) + "." + str(o4) + "/24"

    print a

Résultat d'exécution adc61fa5e5778d323d28c90526a81b6e.png

Python sous Windows ... A (^ _ ^;

Après cela, vous pouvez enregistrer l'IP divisée à l'aide de l'API Zabbix ...

L'exécution de l'API Zabbix en Python est facile avec l'article ci-dessous. [Essayez l'API ZABBIX avec Pyhton](http://www.zumwalt.info/blog/2012/11/pyhton%E3%81%A7zabbix-api%E3%82%92%E8%A7%A6%E3 % 81% A3% E3% 81% A6% E3% 81% BF% E3% 82% 8B /)

Comme mentionné dans l'article, j'ai également utilisé pycurl au début, mais je suis passé à urllib2. A (^ _ ^;

Lorsque vous utilisez l'API Zabbix en Python, il est pratique de créer xxx.json pour la requête. Si vous lisez le fichier avec json.load, remplacez l'authentification des paramètres par divers paramètres et lancez-le, vous n'avez pas à écrire toutes les requêtes dans le programme comme excuse, ce qui est pratique.

Recommended Posts

J'ai pensé à la logique qui divise / 22 ou / 23 en / 24 unités en spécifiant la plage IP en Python.
Macro (VBA) qui convertit la sélection de plage dans Excel en code d'initialisation de liste Python
À propos de netaddr qui gère l'adresse IP, le CIDR, etc. en Python
À propos de "for _ in range ():" de python
Je pensais ne pas avoir vu le fichier pyc récemment, mais il a été isolé dans pycache par python3
[Python] Comment utiliser l'instruction for. Une méthode d'extraction en spécifiant une plage ou des conditions.
J'ai essayé le mouvement Python3 qui change la direction dans le système de coordonnées
J'ai essayé d'étudier le processus avec Python
J'ai écrit la file d'attente en Python
J'ai écrit la pile en Python
Comment trier en spécifiant une colonne dans le tableau Python Numpy.
Prenez la somme logique de List en Python (fonction zip)
Lisez le fichier ligne par ligne avec Python
Lisez le fichier ligne par ligne avec Python
Parlez des fonctionnalités dont les pandas et moi étions en charge dans le projet
Divise la chaîne de caractères par le nombre de caractères spécifié. En Ruby et Python.
Notez que je comprends l'algorithme des moindres carrés. Et je l'ai écrit en Python.
J'ai créé un outil en Python qui clique avec le bouton droit sur un fichier Excel et le divise en fichiers pour chaque feuille.