Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: [BASH] автоматизация скачивания файла  (Прочитано 2549 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн maneframe

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Доброго времени суток.
захотелось тут на днях немного облегчить себе жизнь и автоматизировать ежедневное обновления файла(из Интернета).
алгоритм - проверяем размер локального файла, проверяем размер удаленного файла, если совпадают - ничего не делаем, если не совпадают то удаляем старый и скачиваем новый.
вот что получилось.
#!/bin/bash
NOW=$(date +"%d-%m-%Y/%H-%M")
dirl=/home/maneframe/share/soft
durl=http://download.geo.drweb.com/pub/drweb/cureit/drweb-cureit.exe
fileR=$(curl -sI $durl | grep Content-Length | cut -d ' ' -f 2)
fileL=$(stat -c %s $dirl/drweb-cureit.exe)
if [ "$fileL" != "$fileR" ]; then
rm $dirl/drweb-cureit.exe
wget -P $dirl http://download.geo.drweb.com/pub/drweb/cureit/drweb-cureit.exe
echo $NOW "--download is done: Old " $fileL " New " $fileR $'\n'  >> $dirl/drweb.log
else
echo $NOW "--not downloaded, is new" >> $dirl/drweb.log
fi
exit
файл скачиватеся каждый раз, даже если размеры совпадают, подозреваю что дело в curl либо stat(разные типы переменных).

andrey_p

  • Гость
Re: [BASH] автоматизация скачивания файла
« Ответ #1 : 08 Октября 2011, 14:48:16 »
Пробел(ы) может где-то затесались.
1. Запусти скрипт так:
bash -x script2. Замени в
if [ "$fileL" != "$fileR" ]; then "!=" на "-ne" или просто убери кавычки вокруг имен переменных (здесь же).

Оффлайн lukinfore

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: [BASH] автоматизация скачивания файла
« Ответ #2 : 08 Октября 2011, 15:17:36 »
wget ведь умеет проверку модификаций. Зачем велосипед?

Оффлайн maneframe

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: [BASH] автоматизация скачивания файла
« Ответ #3 : 17 Октября 2011, 08:19:59 »
Извиняюсь за долгое молчание.
bash -x script показал, что grep вырезал число с символом переноса каретки (/r), в этом была вся проблема.
wget ведь умеет проверку модификаций. Зачем велосипед?
хм, буду пробовать, спс.

 

Страница сгенерирована за 0.03 секунд. Запросов: 26.