用于检查IP是否列入白名单的脚本功能

时间:2011-05-09 23:15:49

标签: python sql function whitelist

我有一个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。

1 个答案:

答案 0 :(得分: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包装器。