gpt4 book ai didi

python - 在 python 中不存在的文件中添加行

转载 作者:太空宇宙 更新时间:2023-11-04 05:04:21 25 4
gpt4 key购买 nike

所以我要做的是首先读取/var/log/secure 文件中我想要阻止的 IP 地址并将该列表保存到文件中。然后我尝试读取该文件并确定该地址是否在美国境外,如果是,那么我想在 iptables 中阻止该地址。

我还想在写入之前预先确定该地址是否已添加到 iptables 中:

#!/usr/bin/env python

import GeoIP
import os

os.system("cat /var/log/secure | grep 'Failed password for invalid user' | grep -oE '((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])' >> /home/user/ipaddresses.txt")

iptables_file = open('/etc/sysconfig/iptables', 'r')
loglist = iptables_file.readlines()
iptables_file.close()
found = False

gi = GeoIP.new(GeoIP.GEOIP_MEMORY_CACHE)

for line in file("/home/user/ipaddresses.txt", "r"):
line = line[:-1] # strip the last from the line
#print line, "-", gi.country_code_by_addr(line)

if str(gi.country_code_by_addr(line)) != "US":
for ip in loglist:
if str(line) in line:
print str(line) + " found in iptables, skipping ip address"
break
else:
print "adding " + str(line) + " to iptables"
#os.system("iptables -A INPUT -s " + str(line) + " -j DROP")

#os.system("service iptables save")

显然,我不想写信给我的 iptables,直到我知道它可以工作,所以这就是我将其注释掉的原因。我究竟做错了什么?这是错误:

grep: write error
cat: write error: Broken pipe

最佳答案

第二个 grep 命令:

grep -oE '((1?[0-9]...[0-5])'/var/log/secure

有/var/log/secure 作为参数。那不应该在那里。它正在读取文件而不是读取标准输入,这导致了错误。

关于python - 在 python 中不存在的文件中添加行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21270330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com