如何检查规则是否已在iptables中

时间:2018-11-14 19:07:31

标签: python shell grep raspberry-pi

我的python脚本出现问题,该脚本应检查是否在iptables中编写了某个规则,如果没有,请在其中添加。

def blockip(packet_ip):

   cmd="sudo /sbin/iptables -A INPUT -s "+packet_ip+" -j DROP"
   print cmd

   if ["$(sudo cat /sbin/iptables --list | grep -- packet_ip)"]:
        print "Already Blocked"
    else:
        subprocess.call(cmd,shell=True)
        print packet_ip + " Has been Blocked"

这是我的函数,应该处理它,但是如果满足相同的packet_ip,它将无法正常工作,并且在iptables中多次写入相同的规则。如果有帮助,请在RPI btw上运行。

1 个答案:

答案 0 :(得分:1)

您需要将 packet_ip 值插入其名称中
正确的代码是:

def blockip(packet_ip):

   cmd=f"sudo /sbin/iptables -A INPUT -s {packet_ip} -j DROP"
   print cmd

   if [f"$(sudo cat /sbin/iptables --list | grep -- {packet_ip})"]:
        print "Already Blocked"
    else:
        subprocess.call(cmd,shell=True)
        print f"{packet_ip} Has been Blocked"

我使用的是适用于python 3.6或更高版本的较新的字符串格式。