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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Вылетает скрипт закачки репозитория Ubuntu 7.10 по ftp  (Прочитано 2334 раз)

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

Оффлайн fedorangarsk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Задача такая.
Качаю репозитории Ubuntu, медленный интернет, поэтому скрипт дебмиррор иногда после закачки большого (около 10 мб) файла работает некорректно, выдавая
Timeout at /usr/share/perl/5.8/Net/FTP.pm line 503
WARNING: releasing 1 pending lock...
и просто завершается, что само по себе не так уж плохо, но чаще бывает вот такой случай:

[  0%] Getting: pool/universe/b/boson-data/boson-data_0.13-1_all.deb   
 ###################################################################################
###########################################################################################
Unable to close datastream at /usr/bin/debmirror line 1312

 failed:Opening BINARY mode data connection for pool/universe/b/boson-data/boson-data_0.13-1_all.deb (17804030 bytes).
после чего пишет для всех файлов, естественно не закачивая их:
........
........
Download of pool/universe/z/zziplib/zziplib-bin_0.13.49-2_i386.deb failed:
Connection closed Download of pool/universe/z/zzuf/zzuf_0.8.1-1_i386.deb
failed: Connection closedFailed to download files (16452 errors)!

Поскольку не нашел как побороть эту проблему, не связанную с ошибкой в дебмиррор, описанную в этом форуме (стоит верная версия библиотек и дебмиррора, где эта ошибка уже исправлена) то сейчас убиваю и запуская скрипт закачки через два часа по крону, что само по себе не очень удобно, особенно когда прерывается закачка большого файла, а потом возобновляется снова, да и парсить пакеты дело небыстрое, отнимает время.

Есть идея использовать скрипт, который анализирует соединение с интернетом (у меня адсл 128 кбит по ethernet), и если скорость входящего трафика менее 12 кбит в секунду в течение более 10 минут, то скрипт закачки перезапускался бы.

В написании скриптов я еще неопытный, помогите пожалуйста с написание скрипта, реализующего данный анализ соединения и запуск скрипта при соблюдении указанных условий.

Или может кто то знает как побороть приведенные ошибки в работе дебмиррора. Поиск в инете мало чего дал.

привожу тексты скриптов запуска дебмиррора в данном случаю качаю часть universe репозитория:

#!/bin/bash -x

date +%Y.%m.%d-%T

/usr/bin/debmirror --nosource -m --passive --host=mirror.yandex.ru \
        --root=ubuntu --method=ftp --progress \
        --dist=gutsy,gutsy-security,gutsy-updates,gutsy-backports \
        --ignore-release-gpg --section=universe \
        --arch=i386 /media/sda7/REPOS/universe/

скрипт прописанный сейчас в кроне для запуска скрипта закачки:

#!/bin/sh
/home/fedor/mirroruniv.sh >>logmirror$(date +%Y.%m.%d-%T).txt

Поменял метод соединения с ftp  на http.
Первое что заметил, это перестал работать индикатор процесса.  Теперь выглядит так:

[  0%] Getting: pool/universe/c/claws-mail/claws-mail-trayicon_2.10.0-3ubuntu3_i386.deb... ok
[  0%] Getting: pool/universe/c/claws-mail/claws-mail_2.10.0-3ubuntu3_i386.deb...

Оставляю на ночь, посмотрим что выйдем из этого.  Результаты доложу здесь. :-)

Результаты работы скрипта:
Стабильная работа в течение 12 часов. Подумал что вот оно счастье. И пусть скорость ниже на несколько долей кбайта, но большая стабильность работы скрипта это компенисирует. Без прогресс бара тоже можно жить.
Однако счастье не было бы полным, если бы не вылезла в результате вот такая ошибка, после чего скрипт завершился.

[  3%] Getting: pool/universe/d/dict-gazetteer2k/dict-gazetteer2k_1.0.0-5_all.deb... ok
[  3%] Getting: pool/universe/d/dict-misc/dict-easton_1.5A-1_all.deb... Transfer truncated: only 449966 out of 1122012 bytes received
WARNING: releasing 1 pending lock...

По поводу скрипта:
Можно в качестве информации о работе соединения использовать вывод данных программы iptotal, который выглядит так:

fedor@personal:~$ sudo iptotal eth0 -r 5
Total: 13.88 kBytes/s In: 13.26 Kbytes/s Out:  0.62 Kbytes/s

Тогда необходимо экспортировать вывод в файл, и проанализировать его с помощью какой нибудь утилиты, например awk (а вот в этом я не силен уже) и далее использовать полученную статистику в скрипте.

Единственно правильным в моем случае оказалось использование протокола rsync. Только в этом случае скрипт работал без вылетов с ошибкой и докачивал все полностью и корректно.
« Последнее редактирование: 21 Января 2008, 17:14:34 от fedorangarsk »

Оффлайн Lolka

  • Участник
  • *
  • Сообщений: 162
  • Адепт высшей магии по Убунтизму
    • Просмотр профиля
Re: Помогите написать скрипт, очень надо
« Ответ #1 : 11 Января 2008, 18:44:03 »
Может и дурацкий совет, но, не вникая в суть задачи -- а что, если сменить --method=ftp на --method=http?))
По крайней мере приведенной выше ошибки уже не будет точно, а если там есть что надо по http то проблема почти решена.

 

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