检查IP是否在白名单中的脚本函数
我有一个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。
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部分就不需要了。
如果你想用数据库来存储白名单数据,我建议你使用mysql或者sqlite。这两种数据库都有适合Python的接口可以使用。