我正在努力使用脚本更改GnuPG私钥密码。
据我所知:它返回该过程最终成功,但它不会更改密码。gpg的任何其他形式的选项都会导致错误并且不会更改密码。
有人有任何提示吗?无论是否使用 Symfony 的流程组件,我都会接受答案——我只需要让它工作。
也欢迎 Python/Bash/Expect 答案。它应该可以在不暴露命令行中的密码短语的情况下工作。
use Symfony\Component\Process\InputStream;
use Symfony\Component\Process\Process;
$fingerprint = '0123456789ABCDEF';
$previous = 'secret';
$passphrase = 'moresecret';
$process = new Process(
[
'gpg',
'--passphrase-fd=0',
'--pinentry-mode=loopback',
'--change-passphrase',
$fingerprint,
]
);
$input = new InputStream();
$process->setInput($input);
$process->start();
$input->write($previous."\n");
$input->write($passphrase."\n");
$input->close();
foreach ($process as $type => $data) {
if ($process::OUT === $type) {
echo "\nSTDOUT: $data";
} else {
echo "\nSTDERR: $data";
}
}
return $process->isSuccessful();