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
_などのコマンドリダイレクトを使用しようとしていますが、パスフレーズのテキストは常に出力されます。このテキストを非表示にすることは可能ですか?
「問題」は、gpgがSTDOUTまたはSTDERRではなくTTYに直接書き込むことです。つまり、リダイレクトできません。
ダニエルが提案したように--batch
オプションを使用できますが、より一般的なアプローチとして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
( リンク )を参照してください
--batch
オプションを追加します。
リダイレクトによって同じ結果を達成したい場合は、次の方法でSTDINを閉じる必要があります。
gpg … <&-
gpg
のマンページには、--no-tty
オプションもリストされています。
--no-tty
TTY(端子)が出力に使用されないようにしてください。 --batchが使用されている場合でも、GnuPGがTTYに警告を出力することがあるため、このオプションが必要になる場合があります。