성공적인 명령을 나타내기 위해 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또는 를 사용하지 않는 -outopensslstdin에서 데이터(키, 인증서...)를 가져와 stdout에 데이터를 씁니다(결과는 pem 파일을 요청하는 것과 유사합니다).

셸에서는 일반적으로 다음과 같이 사용합니다.

openssl cmd < in.pem > out.pem

사용자에게 보낸 메시지가 out.pemstderr로 끝나는 것을 원하지 않으므로 메시지가 발행됩니다.

관련 정보