3

我有一个 Python 脚本,如果它们执行某些操作,它会阻止某些 IP。该脚本包含检查 IP 是否已被阻止的功能。除此之外,我还希望该功能还检查 IP 是否存储在数据库表中,如果是,请不要阻止它(白名单)

该函数如下所示:

def check_ip(ip_address):
    cmd = "/sbin/iptables -L INPUT -n|grep " + ip_address
    signal,output = commands.getstatusoutput(cmd)
    if signal is 0:
        return True
    else:
    return False

我对 Python 不太熟悉,所以我不确定如何使用它,但我想这很简单。我很感谢您提出的任何建议。谢谢 !

稍后编辑:我想使用 MySQL 数据库,因为我将编写一个 PHP 接口来手动添加 IP。我将如何搜索?该表只有 2 个字段:id 和 whitelist_ip,后者存储需要列入白名单的 IP。

4

1 回答 1

0

如果您打算手动编辑此白名单,您可以使用包含 IP 地址列表的文件。(每行一个)然后您可以使用类似这样的代码来检查它:

def check_ip(ip_address):
    cmd = "/sbin/iptables -L INPUT -n|grep " + ip_address
    signal,output = commands.getstatusoutput(cmd)
    if signal is 0:
        return True
    whitelist = open('<filename>')
    for ip in whitelist.readlines():
        if ip_address == ip:
            return True
    return False

这将首先使用您所做的检查进行检查,如果失败,它将检查 ip 白名单。因为函数从 if 子句返回,所以不需要 else 子句。

如果您想使用 sql 数据库来存储白名单数据,我建议使用 mysql 或 sqlite。这两个都有可用的 python 包装器。

于 2011-05-09T23:22:48.253 回答