sfget

Ubuntu Linuxi ja tema erinevate versioonide foorum

Moderaator: Moderaatorid

Vasta
laurivosandi
Moderaator
Moderaator
Postitusi: 647
Liitunud: 08.07.2005, 03:00

sfget

Postitus Postitas laurivosandi »

Sattusin midagi tõmbama SourceForgest ja peeglite valiku lehel tekkis mõte et miks mitte kirjutada wget najal skript mis valiks ise mirrori ja sikutaks sealt vajaliku faili.

Paigaldamine Ubuntus (toimib liiga suure tõenäosusega ka teistes distrotes ja ka BSDs):

Kood: Vali kõik

wget http://v6sa.pingviin.org/shared/progemine/bash/sfget
chmod 755 sfget
chown root:users sfget
sudo mv sfget /usr/bin/
Või minu APTi repo abil:

Kood: Vali kõik

sudo apt-get install sfget
Kasutamine - näiteks:

Kood: Vali kõik

# sfget http://prdownloads.sourceforge.net/phpbb/phpBB-2.0.21.tar.gz
Või

Kood: Vali kõik

# sfget --package phpbb/phpBB-2.0.21.tar.gz
Skripti sorts ka:

Kood: Vali kõik

#/bin/sh

# sfget - Utility for fetching files from SourceForge
# 3. oct 2006: Lauri Võsandi (v6sa@v6sa.pingviin.org)
# This script is licenced under GPL v2

# Mirrors:
mirror[0]=http://ufpr.dl.sourceforge.net
mirror[1]=http://superb-west.dl.sourceforge.net
mirror[2]=http://easynews.dl.sourceforge.net
mirror[3]=http://jaist.dl.sourceforge.net
mirror[4]=http://mesh.dl.sourceforge.net
mirror[5]=http://belnet.dl.sourceforge.net
mirror[6]=http://switch.dl.sourceforge.net

# SourceForge identification:
sf="http://prdownloads.sourceforge.net"

# Extract right parts from 1st command line argument:
url="$1"

if [ "X$url" == "X--package" ]; then               # Handle properly --package switch
  url="$sf/$2"
fi

dir=${url%/*}
host=${dir%/*}
package=/sourceforge/${dir##*/}/${url##*/}

if [ "X$url" == "X" ]; then
  echo "sfget - Commandline utility for downloading files from SourceForge"
  echo "Usage:   sfget $sf/x/y.z"
  echo "Or:      sfget --package x/y.z"
  exit 0
fi

if [ "X$host" != "X$sf" ]; then                    # Check wether argument is actually a SourceForge URL
  echo "This is not SourceForge URL!"
  exit 1                                           # Exit on non-SourceForge URL
fi

for i in ${mirror[@]}; do                           # Run through mirrors array
  echo "Trying mirror: $i"                          # Tell which mirror is being used
  wget -c $i$package                                # Receive file by WGET
  if [ $? = 0 ]; then                               # Check wether errorcode was zero (file was received successfully)
    exit 0                                          # Exit the script on true statement
  else
    echo ""                                         # Leave empty line for next mirror attempt
  fi
done

exit 1                                              # Couldn't receive file from any server, quitting with non-zero errorcode
Viimati muutis laurivosandi, 04.10.2006, 17:46, muudetud 4 korda kokku.
Kasutaja avatar
antik
Pingviini aktivist
Pingviini aktivist
Postitusi: 159
Liitunud: 25.08.2006, 21:31

Re: sfget

Postitus Postitas antik »

Ma soovitaks vaadata ka alternatiivina aria-t.

NB: originaalautori PBI link on nati vana- uus pakend on saadaval siit.
laurivosandi
Moderaator
Moderaator
Postitusi: 647
Liitunud: 08.07.2005, 03:00

Re: sfget

Postitus Postitas laurivosandi »

antik kirjutas:Ma soovitaks vaadata ka alternatiivina aria-t.
Arvan et wgeti võib leida pea igast GNU/Linux või BSD kastist erinevalt ariast ning hetkel ei näe ma ühtegi mõjuvat põhjust et eelistada ariat wgetile kui on tarvis faile üle HTTP sikutada. wgeti -c võtme abil saab ka poolikut faili jätkata nii et see ka probleem pole
Vasta