우리를

우리를

저는 웹 호스팅 회사의 시스템 관리자 인턴이고 이 작업을 수행하는 방법을 알아내려고 노력 중이므로 최선을 다해 설명하겠습니다.

/etc/blockedips 및 /etc/donotblock이 있습니다.

매 시간마다 실행되는 cron에서 설정할 수 있는 스크립트를 만들고 싶습니다. 두 개의 파일을 스캔하고 비교하고 a) 경고를 보내거나(우리는 watchdog을 사용합니다) b) 차단된 IP 내의 IP를 자동으로 삭제합니다. 차단해서는 안되는 IP를 항상 추가하는 다른 기술자가 많기 때문에 /donotblock에서 차단해서는 안되는 항목과 일치합니다.

제가 스크립팅을 처음 접했기 때문에 제가 겪고 있는 문제는 직접 IP 주소에 대해 간단한 grep 명령을 쉽게 실행할 수 있다는 것입니다(예: 76.76.76.76은 두 파일 간에 쉽게 일치합니다). 방법 다음을 수행하십시오.

우리 회사의 IP 블록이 99.10.10.0/24라고 가정해 보겠습니다. 나는 모든 주소를 /donotblock에 넣고 싶지 않고 단지 스크립트가 99.10.10.*의 모든 IP와 일치하기를 원할 뿐이며 이를 수행하는 방법에 대해서는 공백으로 그립니다.

누구든지 올바른 방향으로 나를 가리킬 수 있습니까? 편집: 샘플

따라서 파일은 다음과 같습니다.

/etc/차단하지 않습니다

우리를

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

다른 사람들

184.123.20.10 184.123.20.11

그런 다음

/etc/blocked_ips

76.45.23.1

/blocked_ips에 일부 기술이 추가되었다고 가정해 보겠습니다.

73.16.32.10, 전체 서브넷을 구성하기 위해 스크립트에서 "73.16.32.*"를 찾도록 하고 싶습니다.

수석 엔지니어와 대화하면서 그는 스크립트가 donotblock에 있는 것과 일치하는 Blocked_ips 내의 IP를 자동으로 삭제하도록 하는 것을 선호합니다.

감사해요

답변1

Python netaddr패키지를 사용하면 IP 범위를 반복할 수 있습니다.

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

from netaddr import *

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

for ip in ipset:
     print ip

산출:

99.10.10.0
99.10.10.1
99.10.10.2
...
99.10.10.253
99.10.10.254
99.10.10.255

관련 정보