我已经开始监控我的 ubuntu 服务器上的系统日志,并注意到来自世界各地的 ips 有数千次失败的 ssh 尝试。我编写了一个简单的 python 脚本来跟踪 ips,然后将它们编辑到我的 hosts.deny 文件中,至少可以对此采取一些措施。但是当我运行我的脚本时,我无法再 ssh 到服务器。所以我用我制作的备份恢复了 hosts.deny - 它又正常工作了。所以我检查了所有的代码。一遍又一遍。找不到任何错误。所以我决定运行一个小测试。从原始 hosts.deny 文件开始,我用 python 编写了这个函数:
def test():
with open('/etc/hosts.deny', 'r') as file:
data = file.read()
with open('/etc/hosts.deny', 'w') as file:
file.write(data)
这个函数什么都不做。它所做的就是读取文件,然后用相同的内容重写文件。理论上,什么都不会发生。但是当我运行它时,我无法再 ssh 到我的服务器了。用备份文件替换 hosts.deny 并繁荣又能正常工作了。我猜想在较低级别上发生了一些我不知道的事情?或者当您使用 python 而不是在终端中写入文件时发生了某种字符转换?
另外 - 我知道有拒绝主机的存在,但我想要那种只需编写自己的 pidly 脚本即可获得的灵活性,这是一个很好的学习练习 - 所以请帮助我并告诉我为什么会发生这种情况?非常感谢,感谢您的阅读
答案1
毕竟,这是行尾字符。Python 知道如何将其 EOL 切换为系统正确的 EOL。问题是我需要在每行末尾明确添加一个 EOL 字符,而我之前没有这样做。感谢您回答我的问题。我很感激您的回复。@ubfan1 @user628388