자동 추출 암호화된 아카이브를 만들려고 합니다. 이것은 나에게 작동하지 않는 코드입니다.
openssl enc -aes-256-cfb -salt -d -a | tar -x -j <<EOF
U2FsdGVkX19f7pGFSqDXJSREp/oDxJD0oii/FYvJlJpO8fB5ttZ/Qc8vSwIOS2y0
QUlWLocow4S1YWf86615Ji3n16RLvhOIRiy9S8DNGXl9C6ea1FYDdiuy2lA75lME
...
8yQIpRng/gXItWlaGJapqW9z2wx7y2im/lPGM8UrwZN9uY3DuRx3XbpMY5yuRWU0
oArQEvKxBAP/bB689j4P291Oauw1E8++na9phkEUXJY=
EOF
산출:
enter aes-256-cfb decryption password:tar: Unrecognized archive format
tar: Error exit delayed from previous errors.
내장된 base64 데이터는 복호화를 사용하여 복호화되어야 하며 openssl
해당 출력은 사용자에게 비밀번호를 요청할 수 있어야 합니다 tar
. 파이프를 openssl
제거하면 :tar
openssl enc -aes-256-cfb -salt -d -a >outfile <<EOF
...
그러면 모든 것이 잘 작동합니다. 그래서 저는 openssl이 stdin/stdout을 방해하지 않고 터미널에서 비밀번호 프롬프트와 입력을 처리할 수 있다고 가정합니다(어쩌면 프롬프트가 stderr로 이동하고 비밀번호 읽기가 일부 tty 매직을 사용하여 구현될 수도 있음).
나는 다음 구조로 이 작업을 해결했습니다.
{ openssl enc -aes-256-cfb -salt -d -a | tar -x -j; } <<EOF
...
하지만 첫 번째 스크립트의 문제점을 이해하지 못합니다.
답변1
여기서 문서의 끝은 openssl 이전(또는 이후)이어야 합니다.
당신은 무엇을 했나요:
sed -e s/^/water/ | sed -e s/^/wine/ <<EOF
hello world
EOF
(당신은 필요합니다 ctrl- d여기)
주다:
winehello world
두 번째 sed가 작동하는 경우에만(물은 없고 와인만) 수행해야 할 작업은 다음과 같습니다.
sed -e s/^/water/ <<EOF | sed -e s/^/wine/
hello world
EOF
주다:
winewaterhello world
보시다시피 는 , 그 다음에는 hello world
로 바뀌었습니다 .waterhello world
winewaterhello world
당신은 시도해야
openssl enc -aes-256-cfb -salt -d -a <<EOF | tar -x -j