URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9694
[ Назад ]

Исходное сообщение
"Скрипт Supload на Bash (Selectel). Возвращает ли он код ошибки?"

Отправлено xintrea , 14-Июн-13 16:50 
Есть вот такой официальный скрипт для заливки файлов на облачное хранилище Selectel:

https://github.com/selectel/supload/blob/master/supload.sh

Его описание тут:

http://habrahabr.ru/company/selectel/blog/168249/


Смотрю я на него, и не могу понять. Возвращает ли данный скрипт код ошибки, если что-то пошло не так в функции upload?

По коду видно, что в функции upload вроде как в нескольких проблемных местах предусмотрен выход через

return 1

Однако вызов функции upload делается несколько раз в цикле (там перебираются отправляемые файлы). И этот return 1 может пропасть при обработке очередного файла.


Таким образом, внешний скрипт никак не сможет понять, были ли ошибки при выполнении данного скрипта. Например,появление ошибки

[!] Error with calculate file hash, skip uploading $src

никак не повлияет на код возврата скрипта supload. Правильно я понял код?


Содержание

Сообщения в этом обсуждении
"Скрипт Supload на Bash (Selectel). Возвращает ли он код ошибки?"
Отправлено михалыч , 15-Июн-13 12:23 
>[оверквотинг удален]
> код ошибки, если что-то пошло не так в функции upload?
> По коду видно, что в функции upload вроде как в нескольких проблемных
> местах предусмотрен выход через
>
return 1

> Однако вызов функции upload делается несколько раз в цикле (там перебираются отправляемые
> файлы). И этот return 1 может пропасть при обработке очередного файла.
> Таким образом, внешний скрипт никак не сможет понять, были ли ошибки при
> выполнении данного скрипта. Например,появление ошибки
>
[!] Error with calculate file hash, skip uploading $src

> никак не повлияет на код возврата скрипта supload. Правильно я понял код?

А что если и заливать файлы не скопом, а по одному в цикле?
И отлавливать, соответственно ошибку?

И мне кажется, там ошибка в следующем куске


    # check for file hash
    if [ "$MD5CHECK" == "1" ]; then
        # local file hash
        filehash=`${MD5SUM} "$src" | sed 's/ .*//g'`
        if [ -z "$filehash" ]; then
            return 5
        fi

вместо return 5 нужен return 4