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