вот скриптик написал
#!/bin/bash
TMP_DIR="/tmp"
if [ -z "$1" ]; then
echo "Не задан входной файл."
exit 70
fi
TMP=`mktemp`
wget -O - "$1" >$TMP
err=$?
[ $err != 0 ] && exit $err
# <b>Source Downloads:</b><br /> <a href="http://downloads.sourceforge.net/keepassx/keepassx-0.4.3.tar.gz">keepassx-0.4.3.tar.gz</a> (1df67bb22b2e08df49f09e61d156f508)<br />
# <p><b>Download SlackBuild:</b><br /><a href="http://slackbuilds.org/slackbuilds/13.37/office/keepassx.tar.gz">keepassx.tar.gz</a>
# <br /><a href="http://slackbuilds.org/slackbuilds/13.37/office/keepassx.tar.gz.asc">keepassx.tar.gz.asc</a> (<a href="http://slackbuilds.org/faq/#asc">FAQ</a>)</p>
A=( `sed -rn '
# s~.*<b>Source Downloads:</b>.*<a href="([^"]+)">([^<]+)</a> \(([[:xdigit:]]{32})\).*~"\1" "\2" "\3"~
# T
# h
# n
s~.*<p><b>Download SlackBuild:</b>.*<a href="([^"]+)">([^<]+)</a>.*~"\1" "\2"~
T
H
n
s~.*<a href="([^"]+)">([^<]+)</a>.*\(<a .*~"\1" "\2"~
T
H
g
s/\s+/ /g
p
' $TMP` )
rm --force --verbose "$TMP"
for i in {0..3}
do
T="${A[$i]}"
T="${T#\"}"
T="${T%\"}"
A[$i]="$T"
done
SLACKBUILD_LINK="${A[0]}"
SLACKBUILD_NAME="${A[1]}"
SLACKBUILD_ASC_LINK="${A[2]}"
SLACKBUILD_ASC_NAME="${A[3]}"
echo "
--------------------------------------------------------------------
SLACKBUILD_LINK: $SLACKBUILD_LINK
SLACKBUILD_NAME: $SLACKBUILD_NAME
SLACKBUILD_ASC_LINK: $SLACKBUILD_ASC_LINK
SLACKBUILD_ASC_NAME: $SLACKBUILD_ASC_NAME
--------------------------------------------------------------------"
wget --output-document=$TMP "$SLACKBUILD_LINK"
err=$?
[ $err != 0 ] && exit $err
mv --verbose $TMP "$TMP_DIR/$SLACKBUILD_NAME"
err=$?
[ $err != 0 ] && exit $err
wget --output-document=$TMP "$SLACKBUILD_ASC_LINK"
err=$?
[ $err != 0 ] && exit $err
mv --verbose $TMP "$TMP_DIR/$SLACKBUILD_ASC_NAME"
err=$?
[ $err != 0 ] && exit $err
gpg --verify "$TMP_DIR/$SLACKBUILD_ASC_NAME"
err=$?
[ $err != 0 ] && exit $err
echo -e "\033[32mЭЦП верная.\033[0m"
rm --verbose --force "$TMP_DIR/$SLACKBUILD_ASC_NAME"
echo "Распаковка..."
tar -xvvf "$TMP_DIR/$SLACKBUILD_NAME"
err=$?
[ $err != 0 ] && exit $err
SLACKBUILD_DIR="${SLACKBUILD_NAME%.tar.gz}"
cd "$SLACKBUILD_DIR"
err=$?
[ $err != 0 ] && exit $err
rm --verbose --force "$TMP_DIR/$SLACKBUILD_NAME"
while read s
do
TEMP="${s#DOWNLOAD=\"}"
if [ "$TEMP" != "$s" ]; then
DOWNLOAD="${TEMP%\"}"
SOURCE_LINK="$DOWNLOAD"
SOURCE_NAME="${DOWNLOAD##*/}"
else
TEMP="${s#MD5SUM=\"}"
if [ "$TEMP" != "$s" ]; then
SOURCE_MD5="${TEMP%\"}"
else
TEMP="${s#DOWNLOAD_x86_64=\"}"
if [ "$TEMP" != "$s" ]; then
DOWNLOAD="${TEMP%\"}"
SOURCE_LINK_x86_64="$DOWNLOAD"
SOURCE_NAME_x86_64="${DOWNLOAD##*/}"
else
TEMP="${s#MD5SUM_x86_64=\"}"
if [ "$TEMP" != "$s" ]; then
SOURCE_MD5_x86_64="${TEMP%\"}"
fi
fi
fi
fi
done < $SLACKBUILD_DIR.info
echo "
--------------------------------------------
SOURCE_LINK: $SOURCE_LINK
SOURCE_NAME: $SOURCE_NAME
SOURCE_MD5: $SOURCE_MD5
SOURCE_LINK_x86_64: $SOURCE_LINK_x86_64
SOURCE_NAME_x86_64: $SOURCE_NAME_x86_64
SOURCE_MD5_x86_64: $SOURCE_MD5_x86_64
--------------------------------------------
"
for A in "" "_x86_64"
do
if [ "$A" ]; then
SOURCE_LINK="$SOURCE_LINK_x86_64"
SOURCE_NAME="$SOURCE_NAME_x86_64"
SOURCE_MD5="$SOURCE_MD5_x86_64"
fi
if [ "$SOURCE_LINK" = "UNSUPPORTED" -o "$SOURCE_LINK" = "UNTESTED" ]; then
continue
fi
wget --output-document=$TMP "$SOURCE_LINK"
err=$?
[ $err != 0 ] && exit $err
mv --verbose $TMP "$SOURCE_NAME"
err=$?
[ $err != 0 ] && exit $err
MD5=`md5sum "$SOURCE_NAME"`
MD5=${MD5%% *}
if [ $MD5 == $SOURCE_MD5 ]; then
echo -e "\033[32mКонтрольная сумма исходников СОВПАДАЕТ.\033[0m"
else
echo "md5 FAIL."
exit 71
fi
done
UPD: обновил. теперь ссылка на слакобильд берётся со страницы, а потом из info берётся ссылка на исходники. Так более надёжно.
UPD2: добавил 64х битывые версии