0

我正在尝试从python内部调用certutil。但是我需要使用引号并且一直无法这样做。我的代码如下:

import subprocess
output= subprocess.Popen(("certutil.exe", "-view", '-restrict "NotAfter <= now+30:00, NotAfter >= now+00:00"' ), stdout=subprocess.PIPE).stdout
for line in output:
    print(line)

output.close()

我认为单引号可以让我在字符串中使用双引号。

我也尝试使用带有转义字符 ( \") 的双引号,但是我不断收到相同的错误:

Unknown arg: -restrict \\NotAfter\r\n'

由于某种原因,它似乎正在翻译"\\.

任何人都可以提供有关为什么以及如何解决它的见解吗?

4

2 回答 2

0
output=subprocess.Popen(("certutil.exe -view -restrict  \"NotAfter<=now+30:00,NotAfter>=now+00:00\"" ),stdout=subprocess.PIPE).stdout

这是需要的。我将命令作为带有 2 个参数的命令传递。我应该做的是将它作为一个带有 2 个参数的大命令传递。

于 2014-08-25T13:04:56.137 回答
0

我没有安装任何版本的 Python。但是根据我如何在 os.system 中使用 2 个引号的答案?PYTHON和subprocess的文档,subprocess自动处理对带空格的参数的双引号要求。

所以你应该需要简单地使用:

import subprocess
output= subprocess.Popen(("certutil.exe", "-view", "-restrict", "NotAfter <= now+30:00, NotAfter >= now+00:00" ), stdout=subprocess.PIPE).stdout
for line in output:
    print(line)

output.close()

调用certutil时使用的命令行是:

certutil.exe -view -restrict "NotAfter <= now+30:00, NotAfter >= now+00:00"
于 2014-08-24T17:34:51.623 回答