2011-05-09 89 views
2

我有一个Python脚本,如果它们执行某些操作,它将阻止一些IP。该脚本包含一个函数来检查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。我将如何搜索?该表只有两个字段:id和whitelist_ip,后者存储需要列入白名单的IP。

+0

我也忘了补充说,表名实际上是白名单,它只包含2行:包含实际IP地址的id和whitelist_ip。 – darkey3 2011-05-09 23:18:01

回答

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包装可用。

+0

谢谢,但我想使用MySQL数据库,因为我将编写一个PHP接口来手动添加IP。我将如何搜索?该表只有两个字段:id和whitelist_ip,后者存储需要列入白名单的IP。 – darkey3 2011-05-09 23:30:08

+0

你会想看看一个名为MySQLdb的python包。你可以在这里找到它:http://sourceforge.net/projects/mysql-python/forums/forum/70461/topic/1653833 – 2011-05-09 23:50:16

+0

但我如何在编码中实现这一点?这就是我感兴趣的。 – darkey3 2011-05-10 10:24:32