我在 python 中使用脚本从 Postfix 服务器获取邮件。此脚本获取邮件,删除标题并仅留下电子邮件正文。然后它使用这个主体通过 os.system()
执行 linux 命令。例如,我正在发送带有 mkdir 文件夹
的电子邮件,脚本会创建它。
问题出在我通过邮件发送 ls
时。我得到了响应 : not found ls
第二个问题是 mkdir
,因为它将 ^M 添加到电子邮件的名称中。例如,我发送了 mkdir folder
并创建了“folder
?”。
你有什么想法吗?
最佳答案
您已经确定了问题所在:电子邮件中包含您意料之外的 ^M 个字符。 (CR LF 是一种常见的行结束约定;Unix 通常不喜欢 CR)。
尝试从您的命令中删除“\r”:command = command.translate(None, "\r")
.
我还敦促您仔细考虑运行通过电子邮件发送的任何命令的安全隐患。可能有更安全的方法来完成您想要完成的任务。
关于python - 在python中使用os.system()来执行linux命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26555814/