7zip、rarなどの抽出操作を自動化するシェルスクリプトを作成しています。通常、JDownloader2を介してファイルをダウンロードするときにJDownloader2はこれを行いますが、手動でファイルをダウンロードするときはまだ解凍する必要があります。アーカイブがパスワードで保護されていない場合、スクリプトはバックグラウンドで正常に実行できます。ただし、アーカイブがパスワードで保護されている場合、パスワードを手動で入力できないため、抽出は失敗します。そのため、パスワードのリストをスクリプトから7zipまたはunrarに渡してパスワードを1行ずつ読み、正しいパスワードを取得する簡単な方法があるかどうか疑問に思います。
答え1
以下は、パスワードのリストを取得して各行をテストし、パスワードが正しいかを抽出するシェルスクリプトです。
#!/bin/bash
passwordlist="/path/to/password-list"
outdir="/wherever"
cat "$passwordlist" | tr -d '\r' | while IFS= read -r PW
do
if [[ $(7z l -p"$PW" "$1" 2>&1 | grep --count "ERROR") == 0 ]]
then
echo "$PW"
7z x -p"$PW" -o"$outdir" -y "$1"
exit 0
fi
done