成功したコマンドを示すためにopensslがstderrで印刷するのはなぜですか?

成功したコマンドを示すためにopensslがstderrで印刷するのはなぜですか?

opensslを使用してCSRを生成すると、通常の出力がstderrに送信されます。なぜstdoutにないのか分かりません。いくつかの証明書/キーペアの生成をスクリプト化しており、エラー状態を検出できるようにしたいが、これは問題を混同します。

admin@ip-10-248-185-66:~> openssl req -rand $RAND -new -newkey rsa:2048 -nodes -keyout $KEYPATH -subj /C=US/ST=CA/L=LA/O=TS/OU=server/CN=primary -out $CSRPATH -config $CONFPATH
Generating a 2048 bit RSA private key
.........................+++
..................................+++
writing new private key to '$KEYPATH'
-----
admin@ip-10-248-185-66:~> echo $?
0
admin@ip-10-248-185-66:~> openssl req -rand $RAND -new -newkey rsa:2048 -nodes -keyout $KEYPATH -subj /C=US/ST=CA/L=LA/O=TS/OU=server/CN=primary -out $CSRPATH -config $CONFPATH 2>/dev/null
admin@ip-10-248-185-66:~>

ベストアンサー1

ユーザーに送信するメッセージはstderrにあります。標準出力に送られるもの結果命令したopenssl

デフォルトでは、または-inを使用しない-out限りopenssl、stdinからデータ(キー、証明書...)を取得し、stdoutにデータを書き込みます(結果はpemファイルを要求するのと似ています)。

シェルでは通常、次のように使用します。

openssl cmd < in.pem > out.pem

ユーザーに送信されたメッセージがout.pemstderrで終わることを望まないので、メッセージが発行されます。

おすすめ記事