Como escanear e comparar dois arquivos que corresponderão aos endereços IP? Script para empresa de hospedagem na web

1

Sou estagiário de administração de sistemas para uma empresa de hospedagem e estou tentando descobrir como realizar essa tarefa, de modo que farei o mais descritivo possível.

Temos o / etc / blockedips e o / etc / donotblock

Eu quero criar um script que eu possa eventualmente configurar no cron que será executado como uma vez a cada hora que varre os arquivos e os compara e a) envia um alerta (usamos o watchdog) ou b) remove automaticamente o IP inside / blockedips que coincide com o que ele não deveria estar bloqueando dentro / donotblock, já que temos muitos outros técnicos que sempre adicionam IPs que não devem ser bloqueados.

O problema que estou tendo como novo no script é que posso executar facilmente um simples comando grep para endereços IP diretos (ex: 76.76.76.76 será facilmente encontrado em ambos os arquivos), mas não consigo descobrir como fazer o seguinte:

Digamos que o bloqueio de IP de nossas empresas seja 99.10.10.0/24. Eu não quero colocar em cada endereço dentro / donotblock, eu só quero que o script corresponda a qualquer IP que é 99.10.10. * E eu estou desenhando um espaço em branco sobre como realizar isso.

Alguém pode me apontar a direção certa com isso? Editar: amostra

Então os arquivos são assim:

/ etc / donotblock

Us

26.225.128.0/18 43.150.128.0/20 44.50.142.0/24 73.16.32.0/20

Todos os outros

184.123.20.10 184.123.20.11

e depois

/ etc / blocked_ips

76.45.23.1

digamos que alguma tecnologia seja adicionada ao / blocked_ips

73.16.32.10, só quero que o script procure "73.16.32. *" para compensar toda essa sub-rede.

Falando ao engenheiro-chefe, ele prefere que o script remova automaticamente o IP dentro de "blocks_bloqueados" que correspondem ao que está no donotblock

Obrigado

    
por RaptureVeteran 23.02.2016 / 15:34

1 resposta

0

O pacote netaddr do Python permite iterar em intervalos de IP:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from netaddr import *

ipset = IPSet(['99.10.10.0/24'])

for ip in ipset:
     print ip

Saída:

99.10.10.0
99.10.10.1
99.10.10.2
...
99.10.10.253
99.10.10.254
99.10.10.255
    
por 24.02.2016 / 01:53

Tags