如果 python 的 os.system()
,我正在尝试使用标准 bash 脚本写入一个 monit 配置文件,这个字符串是我想要模仿的。
echo -e "\t" start program = \""/etc/init.d/snortd00 start\"" >> /etc/monit.d/ips_svcs.monit
这是我使用 os.system()
的尝试。它们都产生相同的结果。没有一个在 /etc/init.d/snortd00 start
os.system('echo -e \"\t\" start program = \""/etc/init.d/snortd00 start\"" >> /etc/monit.d/ips_svcs.monit')
os.system('echo -e \"\t\" start program = \"\"/etc/init.d/snortd00 start\"\" >> /etc/monit.d/ips_svcs.monit')
os.system('echo -e \"\t\" start program = "/etc/init.d/snortd00 start" >> /etc/monit.d/ips_svcs.monit')
os.system('echo -e \"\t\" start program = "\"/etc/init.d/snortd00 start\"" >> /etc/monit.d/ips_svcs.monit')
这就是使用所有四个 os.system()
语句编写的内容。 启动程序 =/etc/init.d/snortd00 启动
我正在寻找这个start program = "/etc/init.d/snortd00 start"
最佳答案
只需使用原始字符串来避免双重转义(一次用于 python,一次用于 shell):
cmd = r'echo -e "\t" start program = \""/etc/init.d/snortd00 start\"" >> /etc/monit.d/ips_svcs.monit'
os.system(cmd)
正如 tripleee 在评论中指出的那样,os.system
is being replaced by subprocess ,所以上面的代码会变成这样:
subprocess.call(cmd, shell=True)
更好的是,只需使用 python:
with open("/etc/monit.d/ips_svcs.monit", "a") as file:
file.write('\t start program = "/etc/init.d/snortd00 start"\n')
关于python - 你如何使用 python 的 os.system() 引用 "echo"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29286687/