我正在编写一个 shellscript 来自动执行 7zip、rar 等提取任务。通常,当我通过 JDownloader2 下载文件时,JDownloader2 会为我执行此操作,但是当我手动下载文件时,我仍然需要自己解压。如果档案没有密码保护,脚本可以在后台正常运行。但是,如果档案受密码保护,则提取会失败,因为我无法手动输入密码。所以我想知道是否有一种简单的方法可以将密码列表传递给脚本中的 7zip 或 unrar,以便它可以从中逐行读取密码,从而尝试获取正确的密码。
答案1
这是我的 shell 脚本,它获取密码列表并测试每一行并提取一个密码是否正确:
#!/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