并行 bash 脚本寻找密码

并行 bash 脚本寻找密码

我有以下用于猜测密码的脚本。如何使用命令使其并行parallel?我知道 Cygwin 中没有并行,但我可以在 Linux 机器上使用此脚本。

#!/bin/bash
while read -r p; do
    "/cygdrive/c/Program Files/TrueCrypt/TrueCrypt.exe" /a /s /l x /q /v container.tc /p"$p"
    code=$?
    echo "$code $p">>log.txt
    echo "$code $p"
    if [ "$code" -ne 1 ]; then echo "$p" >> found.txt ; echo -e "\\a" ; exit ; fi
done < passwds.txt
echo -e "\\a"

答案1

parallel我猜您的要求是使用GNU/Linux 中的实用程序重写该脚本。

Bulitin命令while是一行一行的从文件中读取passwds.txt,如果你的文件比较大,那么整个过程耗费的时间会比较长。

在这里,我尝试用parallel重写它

#!/usr/bin/env bash

funcPasswdOperation(){
    p="${1:-}"
    "truecrypt" --non-interactive container.tc /p="$p"
    code=$?
    echo "$code $p">>log.txt
    echo "$code $p"
    if [ "$code" -eq 0 ]; then echo "$p" >> found.txt ; echo -e "\\a" ; exit ; fi
}

export -f funcPasswdOperation
cat passwds.txt | parallel -k -j 0 funcPasswdOperation
echo -e "\\a"

由于我没有测试过,所以我不能保证这个重写的脚本一定能工作。但是使用方法类似。

小心open files出错。

相关内容