wrath-darkplaces/crypto-keygen-standalone-br...

54 lines
795 B
Bash

#!/bin/sh
outfile=$1; shift
hosts=$1; shift
on()
{
case "$1" in
localhost)
shift
exec "$@"
;;
*)
exec ssh "$@"
;;
esac
}
pids=
mainpid=$$
trap 'kill $pids' EXIT
trap 'exit 1' INT USR1
n=0
for h in $hosts; do
nn=`on "$h" cat /proc/cpuinfo | grep -c '^processor[ :]'`
n=$(($nn + $n))
done
rm -f bruteforce-*
i=0
for h in $hosts; do
nn=`on "$h" cat /proc/cpuinfo | grep -c '^processor[ :]'`
ii=$(($nn + $i))
while [ $i -lt $ii ]; do
i=$(($i+1))
(
on "$h" ./crypto-keygen-standalone -n $n -o /dev/stdout "$@" > bruteforce-$i &
pid=$!
trap 'kill $pid' TERM
wait
if [ -s "bruteforce-$i" ]; then
trap - TERM
mv "bruteforce-$i" "$outfile"
kill -USR1 $mainpid
else
rm -f "bruteforce-$i"
fi
) &
pids="$pids $!"
done
done
wait