运行 来自 Python 的安全导入命令与命令行有不同的行为
Running security import command from Python has different behaviour than command line
我正在尝试使用以下命令将 pkcs#12
证书导入 OS X Keychain:
security import filename -k ~/Library/Keychains/login.keychain -P password -f pkcs12
在python中我这样使用subprocess
:
if os.path.isfile(_file) and platform.system() == 'Darwin':
keychain = os.path.expanduser('~/Library/Keychains/login.keychain')
command_line = 'security import {} -k {} -P {} -f pkcs12'.format(_file, keychain, password)
logger.info('Importing {} into OS X KeyChain.'.format(_file))
return subprocess.call(shlex.split(command_line))
但是我收到此错误消息:
security: SecKeychainItemImport: One or more parameters passed to a function were not valid.
我什至尝试使用 shell=True
,但后来我得到了 security
用法,就好像我传递了一些错误的参数一样。
Usage: security [-h] [-i] [-l] [-p prompt] [-q] [-v] [command] [opt ...]
...
...
但是,当从命令行 运行 时,该命令按预期工作:
security import <filename> -k <home>/Library/Keychains/login.keychain -P DTWLDHPYNBWBJB3 -f pkcs12
1 identity imported.
1 certificate imported.
有什么想法吗?从非交互式控制台 运行 security
时是否有限制?
任何 python 库来实现相同的?
此致
这实际上是由于另一个问题。
我使用的是未刷新或关闭的 tmp 文件。
虽然脚本是 运行,但该函数无法在该文件中找到任何内容。
脚本结束后,文件(有 'delete=False')被刷新,因此命令行工作没有问题。
解决方案是设置 bufsize=0
:(
我正在尝试使用以下命令将 pkcs#12
证书导入 OS X Keychain:
security import filename -k ~/Library/Keychains/login.keychain -P password -f pkcs12
在python中我这样使用subprocess
:
if os.path.isfile(_file) and platform.system() == 'Darwin':
keychain = os.path.expanduser('~/Library/Keychains/login.keychain')
command_line = 'security import {} -k {} -P {} -f pkcs12'.format(_file, keychain, password)
logger.info('Importing {} into OS X KeyChain.'.format(_file))
return subprocess.call(shlex.split(command_line))
但是我收到此错误消息:
security: SecKeychainItemImport: One or more parameters passed to a function were not valid.
我什至尝试使用 shell=True
,但后来我得到了 security
用法,就好像我传递了一些错误的参数一样。
Usage: security [-h] [-i] [-l] [-p prompt] [-q] [-v] [command] [opt ...]
...
...
但是,当从命令行 运行 时,该命令按预期工作:
security import <filename> -k <home>/Library/Keychains/login.keychain -P DTWLDHPYNBWBJB3 -f pkcs12
1 identity imported.
1 certificate imported.
有什么想法吗?从非交互式控制台 运行 security
时是否有限制?
任何 python 库来实现相同的?
此致
这实际上是由于另一个问题。
我使用的是未刷新或关闭的 tmp 文件。
虽然脚本是 运行,但该函数无法在该文件中找到任何内容。
脚本结束后,文件(有 'delete=False')被刷新,因此命令行工作没有问题。
解决方案是设置 bufsize=0
:(