gpt4 book ai didi

python - 通过 python 强化 sshd_config

转载 作者:行者123 更新时间:2023-12-01 03:39:05 28 4
gpt4 key购买 nike

  1. 查找以“#PermitRootLogin yes”开头的行并替换为“PermitRootLogin no”
  2. 在底部添加一行“AllowUsers user1@test.com”
  3. 重新启动 sshd 守护进程

(我的代码)

#!/usr/bin/python3
import fileinput

for line in fileinput.input("/etc/ssh/sshd_config", inplace=True), :
print (line.replace("#PermitRootLogin", "PermitRootLogin no"))

(错误)

回溯(最近一次调用最后一次): 文件“./assignment4-part1.py”,第 6 行,位于 print (line.replace("#PermitRootLogin", "PermitRootLogin=no"))AttributeError:“FileInput”对象没有属性“replace”

(注释)

我尝试了从其他帖子中看到的不同方法来查找和替换行,但遇到了类似的问题/错误。任何指导将不胜感激。我使用的是 CentOS,并且安装/更新了 python3。

最佳答案

您的代码中有语法错误。您的 for 循环表达式有一个错误的逗号:

for line in fileinput.input("/etc/ssh/sshd_config", inplace=True), : 

这意味着您实际上是在迭代包含 fileinput.FileInput 对象的单元素元组,而不是迭代对象本身。

删除逗号:

for line in fileinput.input("sshd_config", inplace=True):                       

另外两个简短的建议:

不要在循环中使用 print,因为 print 会附加换行符,因此整个文件最终会出现双倍行距。考虑一下:

for line in fileinput.input("sshd_config", inplace=True):                       
sys.stdout.write(line.replace("#PermitRootLogin", "PermitRootLogin no"))

最后,考虑一下如果您的输入文件包含以下内容将会发生什么:

#PermitRootLogin no

您的代码会将其重写为:

PermitRootLogin no no

这是无效的。

关于python - 通过 python 强化 sshd_config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39951199/

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