Делаем аналог 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 завершен.