我试图创建一个python脚本,它会自动在我的Linux机器上执行一些安全检查。我想用它把login.defs中的PASS_MIN_DAYS 0改成一个更大的数字。
我已经在一个单独的.txt文件中使用了这段代码,该文件将一个简单的短语从一个字符串更改为另一个字符串,但现在当我转到login.defs时,它将不起作用。我不确定它是否与文件本身或我的代码有关。

def password():
    os.chdir('/etc')
    with open('login.defs', 'r') as file:
        newline=[]
        for word in file.readlines():
            newline.append(word.replace("PASS_MIN_DAYS", "PASS_MIN_DAYS 7"))
            newline.append(word.replace("PASS_MAX_DAYS", "PASS_MAX_DAYS 90"))
            newline.append(word.repalce("PASS_WARN_AGE", "PASS_WARN_AGE 14"))
    with open('login.defs', 'w') as file:
        for line in newline:
            file.writelines(line)
    file.close()

不包含错误消息。另外,如果没有以任何方式正确格式化,请提前道歉,这是我第一次向stackvoverflow发送邮件:)

最佳答案

subprocess.run(['sed', '-i', '/PASS_MIN_DAYS/c\PASS_MIN_DAYS  7', "login.defs"])
subprocess.run(['sed', '-i', '/PASS_MAX_DAYS/c\PASS_MAX_DAYS  90', "login.defs"])
subprocess.run(['sed', '-i', '/PASS_WARN_AGE/c\PASS_WARN_AGE  14', "login.defs"])

This is the answer that i found that fixes it

07-28 10:37