gnupgコマンドの「出力」を隠そうとしていますが、常に印刷されているようです。
コマンドは次のとおりです。
echo "thisprogramwørks" | gpg -q --status-fd 1 --no-use-agent --sign --local-user D30BDF86 --passphrase-fd 0 --output /dev/null
以下は、pgpキーのパスワードを確認して使用するコマンドです。
a=$(echo "thisprogramwørks" | gpg -q --status-fd 1 --no-use-agent --sign --local-user D30BDF86 --passphrase-fd 0 --output /dev/null)
出力を復元します。
echo $a [GNUPG:] USERID_HINT F02346C1EA445B6A p7zrecover (7zrecover craking pgp test) <a@a> [GNUPG:] NEED_PASSPHRASE F02346C1EA445B6A F02346C1EA445B6A 1 0 [GNUPG:] GOOD_PASSPHRASE [GNUPG:] BEGIN_SIGNING [GNUPG:] SIG_CREATED S 1 8 00 1435612254 8AE04850C3DA5939088BE2C8F02346C1EA445B6A
問題は、コマンドを使用すると、コンソールに次のものが印刷されることです。
You need a passphrase to unlock the secret key for user: "test (test) <a@a>" 1024-bit RSA key, ID EA445B6A, created 2015-06-29
コマンドリダイレクトなどの機能を試しましたが、&>/dev/null
常にパスワードテキストが印刷されます。このテキストを非表示にできますか?
答え1
「問題」は、gpgがSTDOUTまたはSTDERRの代わりにTTYに直接書き込むということです。つまり、リダイレクトできません。
--batch
Danielが提案したように、そのオプションを使用できますが、より一般的なアプローチこのツールを使用すると、script
TTYを偽造することができます。これにより、すべての出力がSTDOUTに送信されるため、次にリダイレクトできます/dev/null
。
script -c 'echo "thisprogramwørks" | gpg -q --status-fd 1 --no-use-agent --sign --local-user D30BDF86 --passphrase-fd 0 --output /dev/null' > /dev/null
出力はファイルにも書き込まれるため、引き続きインポートして分析できます。バラよりman script
(協会)
答え2
この--batch
オプションを追加してください。
リダイレクトで同じ結果を得るには、次のようにSTDINを閉じる必要があります。
gpg … <&-
答え3
マンページにはgpg
次のオプションもリストされています--no-tty
。
--no-tty
TTY(ターミナル)がどの出力にも使用されないようにしてください。 --batchを使用してもGnuPGはTTYに警告を出力するため、このオプションが必要な場合があります。