我们

我们

我是一家网络托管公司的系统管理员实习生,我正在尝试弄清楚如何完成这项任务,因此我将尽可能进行描述。

我们有 /etc/blockedips 和 /etc/donotblock

我想创建一个脚本,我最终可以在 cron 中设置该脚本,该脚本将每小时运行一次,扫描两个文件并比较它们,并且 a) 发送警报(我们使用看门狗)或 b) 自动删除 /blockedips 内的 IP这与 /donotblock 中不应该阻止的内容相匹配,因为我们有很多其他技术人员总是添加不应该被阻止的 IP。

由于我是脚本编写新手,我遇到的问题是我可以轻松地为直接 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

Pythonnetaddr包允许您迭代 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

相关内容