#!/bin/bash function PrimaryXml { wget -q -O - "$1/repodata/repomd.xml" \ | grep primary.xml \ | sed -n -e 's/.*"\(.*\)".*/\1/p' } function GetPackages { BaseUrl="$1" # Packages end with - and start with / Include=`echo $2 | sed 's/ /-|\//g'` Exclude=`echo $3 | sed 's/ /-|\//g'` wget -q -O - "$BaseUrl`PrimaryXml $BaseUrl`" \ | zcat \ | sed -n -e 's/.*href="\([^"]*\)\".*/\1/p' \ | grep -E "rpm$" \ | ( [ -z "$Include" ] && cat || grep -E "($Include)" ) \ | ( [ -z "$Exclude" ] && cat || grep -vE "($Exclude)" ) \ } function DownloadPackages { BaseUrl="$1" Mode=0 Include="" Exclude="" shift while (($#)); do if [[ "$1" == "-v" ]] ; then Mode=1 else if [ $Mode -eq 1 ] ; then Exclude="$Exclude $1" else Include="$Include $1" fi fi shift done Packages=0 GetPackages "$BaseUrl" "$Include" "$Exclude" | { while read i ; do if [ ! -f `basename $i` ] ; then test -d `dirname $i` || mkdir -p `dirname $i` echo "Downloading $BaseUrl$i..." wget -q -O "`basename $i`" "$BaseUrl$i" fi Packages=$((Packages+1)) done echo "Download complete: $Packages from $BaseUrl" } }