自動抽出暗号化されたアーカイブを作成しようとしています。これは私にはうまくいかないコードです。
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
2番目の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