我有一个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。
答案 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包装器。