python - 你如何使用 python 的 os.system() 引用 "echo"?

标签 python bash python-2.7

如果 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/

相关文章:

bash - 在某个字段的字符串中追加一个字符

python - 从 Python URL 中提取特定文本

python - 如何设置饼图 matplotlib 的透明度和背景颜色

python - 如何显示pandas read_csv()函数读取的csv文件名?

python - 使用 pandas 进行多变量分组操作

bash - 延迟 bash 中的通配符扩展,同时引用特殊字符

bash - shell 脚本: How to copy files with specific string from big corpus

python - 在Python中执行shell程序而不打印到屏幕

python - 如何同时使用 Anaconda 版本(2.7 和 3.5)?

python - Stacked DenoisingAutoencoders 的 Theano 实现 - 为什么 dA 层的输入相同?