#!/bin/bash # Автоматический загрузчик из командной строки с возможностью добавления файлов в список # и переносом в конец неудачных закачек. # Переменная $list определяет файл со списком закачек (простые ссылки) # Переменная $downdir определяет директорию загрузки # Автор: Шашкин Николай г.Пенза list="$1" if [[ "$list" == "" ]]; then list=~/etc/wget_list.txt ; fi if [ ! -e "$list" ]; then echo "Не найден файл $list со списком загрузок - выходим !" exit 1 fi downdir="$2" if [[ "$downdir" == "" ]]; then downdir=/home/kolan/download ; fi if [ ! -d $downdir ]; then rm -f $downdir; mkdir $downdir; fi ; while true; do unset fname if [[ `wc $list | cut -d ' ' -f2` == 0 ]]; then exit 0; fi; # Список загрузок пуст { while [[ "$fname" == "" ]]; do read fname ; # Считываем первое имя в списке загрузок done }<$list ; echo "#############################################################################################" echo "Downloading $fname" #cd "$downdir"; lftp -c pget -n 10 "$fname" # бред, докачка не работает #cd "$downdir"; lftpget -c "$fname" # бред, докачка не работает #aria2c -d "$downdir" -j 10 -s 10 -c "$fname" # нормальная тулза wget --mirror -c -l5 --no-directories --timeout=30 --tries=3 --directory-prefix="$downdir" "$fname" #cd "$downdir"; axel -n 13 --search=4 -N -a "$fname" # нормальная тулза result="$?" if [[ "$result" != "0" ]]; then sleep 2; fi # Ожидаем 2 секунды, дабы избежать черезчур частых попыток и, вследствие чего, повышенной загрузки ЦП buf=`tail -n +2 $list | grep -v '$fname'` # Вырезаем имя текущей загрузки из списка echo "$buf" > $list if [[ "$result" == "0" ]]; then echo "$fname" >> "${list}-ready.txt" echo "Загрузка успешно завершена!" else echo "$fname" >> $list echo "Загрузка не удалась - переносим её в конец списка." fi done