Делаем аналог wget на bash

Делаем аналог wget на bash

Не знаю зачем, но кто-то написал аналог wget-а на bash-е и сейчас я покажу как он это сделал. Это может быть полезно когда в ОС не установлен cURL и wget и тогда можно скачать файл по протоколу http. Скрипт довольно простой в использовании — нужно запустить его с параметром, где параметр — это и есть ссылка на файл\архив.

И так, открываем:

# vim /usr/local/src/downloader.sh

Вставляем в него следующее:

#!/bin/bash

if [ "$1" == "" ]
then
echo "usage: $0 URL"
exit 0
fi

HOST=`echo $1 | sed 's/http\:\/\///' | sed -r 's/([^/])\/(.*)/\1/'`
FILENAME=`echo "$1" | sed -r 's/(.*)\/(.*)/\2/'`
PATH=`echo "$1" | sed 's/http\:\/\///' | sed -r "s/$HOST//" | sed "s/$FILENAME//"`
PORT=80
HEADERS="HTTP/1.1\r\nHost: $HOST\r\nConnection: close\r\nContent-Length: 0\r\n\r\n"
F="/tmp/dlfile"
exec 3<>/dev/tcp/$HOST/$PORT
echo -e "GET $PATH$FILENAME $HEADERS" >&3
/bin/cat <&3 > $F
/usr/bin/tail $F -n +$((`/bin/sed $F -e '/^\r$/q' | /usr/bin/wc -l`+1)) > $FILENAME
/bin/rm $F

Выставим ему нужные права:

# chmod +x  /usr/local/src/downloader.sh

PS: Его можно переместить, ну скажем в /usr/bin/ потом, выставить права и запускать как любую другую команду в Unix/Linux. 

Запускаем скрипт:

# bash /usr/local/src/downloader.sh http://netassist.dl.sourceforge.net/project/nconf/nconf/1.3.0-0/nconf-1.3.0-0.tgz

Ждем некоторое время ( т.к он не показывает прогресс бар). Делаем аналог wget на bash завершен.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.