如何将“”作为参数传递给 subprocess.check_call?

How to pass "" as argument to subprocess.check_call?

应用解决方案时

ssh-keygen -t rsa -N "" -f my.key

Automating "enter" keypresses for bash script generating ssh keys in Python 3 我偶然发现了以下问题:

sp.check_call(["ssh-keygen", "-t", "rsa", "-N", "\"\"", "-f", "my.key"])

以及

sp.check_call(["ssh-keygen", "-t", "rsa", "-N", "''", "-f", "my.key"])

由于

而失败
Saving key "my.key" failed: passphrase is too short (minimum five characters)

sp.check_call(["ssh-keygen", "-t", "rsa", "-N", "", "-f", "my.key"])

导致 ssh-keygen 提示输入应通过传递 -N "" 来避免的密钥。

有什么pythonic方式可以实现命令接收-N ""?我知道可以将命令和参数作为一个字符串传递,这可能会解决这个问题,或者从对所引用问题的答案中采取另一种方法。我想扩展我的 Python 知识。

sp.check_call(["ssh-keygen", "-t", "rsa", "-N", "", "-f", "my.key"])

在命令行以及 Docker 图像 python:3 中工作,但在脚本中调用代码时无效,该脚本是在 [=] 中使用 python3 script.py 调用的18=] 图片 google/cloud-sdk.

这很有趣,但可能是由于某些评论中所述缺少 tty 时不同的行为造成的。