我的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上运行。
答案 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或更高版本的较新的字符串格式。