Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
30 ноя 2021, 23:25

Обновление 1с ЗУП

Автор Vdmit, 15 июл 2021, 14:00

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

Vdmit

Хочу автоматизировать процесс обновления на Линуксе файловый режим (у меня много однотипных баз!)
не могу понять откуда сейчас можно качать файл 1cv8.zip
wget --http-user=юзер --http-password=парол http://downloads.1c.ru/tmplts/update/1c/HRM/3_1_18_120/1cv8.zip

ОШИБКА 404: Not Found.
подписка имеется
типа нет там того чего хочу.

Уже пакетные команды за-Bash-ил, а вот автоматизировать скачку этого файла стала проблема !
информацию о новых получается брать, все ОК
ЗУП-проф
http://downloads.1c.ru/ipp/ITSREPV/V8Update/Configs/HRM/31/83/UpdInfo.txt
ЗУП-базовая
http://downloads.1c.ru/ipp/ITSREPV/V8Update/Configs/HRMBase/31/83/UpdInfo.txt

Геннадий ОбьГЭС

Цитата: Vdmit от 15 июл 2021, 14:00http://downloads.1c.ru/tmplts/update/1c/HRM/3_1_18_120/1cv8.zip

ОШИБКА 404: Not Found.

Распаковали zip ?

Разве процесс обновления сам не подгружает?

Подключена интернет-поддержка в базе?

Vdmit

@Геннадий ОбьГЭС, поддержка есть , вверху это просто ссылка на получение файла, которая не работает и файл не качается, распаковывать нечего.
1С ка работает под Линуксом там все с конфигуратора обновляется вручную (и файл откуда-то он качает и устанавливает)
НО.... я хочу автоматизировать с командной строки, а мне для этого уже нужен скачанный файл для пакетных операций
например $file_cfu=искомый файл
/opt/1cv8/x86_64/8.3.18.1433/1cestart DESIGNER /F $name_full /N$login /P$pass /UpdateCfg $file_cfu /UpdateDBCfg  /DisableStartupDialogs /Out update_1c.txt
и тогда это все происходит без участия человека ! 15 баз ночью шуршат !

Sabarus

@Vdmit, спасибо тебе мил человек. Сколько же я бился, никак не мог конфу обновить в фоне. А надо было всего лишь /DisableStartupMessages указать.

По твоему вопросу. wget-ом не получится. Куки нужны. Гулял на просторах интернета скрипт под это дело. Вот он с заточкой под мои задачи. Подправишь под свои нужды.
#!/bin/bash

USERNAME=***
PASSWORD="***"

print_help() {
        echo "Скрипт обновления баз данных 1с"
        echo "$(basename $0) FILETYPE"
        echo "где"
        echo "FILETYPE:"
        echo -e "\tplatform - для скачивания платформы"
        echo -e "\taccounting - для скачивания корфигурации 1С:Бухгалтерия"
        echo -e "\taccountingbase - для скачивания корфигурации 1С:Бухгалтерия (базовая)"
        echo -e "\thrm - для скачивания корфигурации 1С:Управление персоналом"
}

check_variables() {
        if [[ -z "$USERNAME" ]]; then
                echo "USERNAME not set"
                exit 1
        fi

        if [[ -z "$PASSWORD" ]]; then
                echo "PASSWORD not set"
                exit 1
        fi
}

check_arguments() {
        case "$1" in
                "platform" )    DOWNLOAD_VER="Platform83"
                                PREFIX="8.3"
                                ;;
                "accounting" )  DOWNLOAD_VER="Accounting30"
                                PREFIX="3.0"
                                ;;
                "accountingbase" )  DOWNLOAD_VER="AccountingBase30"
                                    PREFIX="3.0"
                                    ;;
                "hrm" )         DOWNLOAD_VER="HRM30"
                                PREFIX="3.1"
                                ;;
                "help" )        ptint_help
                                exit 0
                                ;;
                * )             print_help
                                exit 1
                                ;;
        esac
}

get_cookies() {
        echo "Getting versions, please wait."

        SRC=$(curl -c /tmp/cookies.txt -s -L https://releases.1c.ru)

        ACTION=$(echo "$SRC" | grep -oP '(?<=form method="post" id="loginForm" action=")[^"]+(?=")')
        EXECUTION=$(echo "$SRC" | grep -oP '(?<=input type="hidden" name="execution" value=")[^"]+(?=")')

        curl -s -L \
            -o /dev/null \
            -b /tmp/cookies.txt \
            -c /tmp/cookies.txt \
            --data-urlencode "inviteCode=" \
            --data-urlencode "execution=$EXECUTION" \
            --data-urlencode "_eventId=submit" \
            --data-urlencode "username=$USERNAME" \
            --data-urlencode "password=$PASSWORD" \
            https://login.1c.ru"$ACTION"

        if ! grep -q "TGC" /tmp/cookies.txt ;then
            echo "Auth failed"
            exit 1
        fi
}

version() {
        echo "$@" | gawk -F. '{ printf("%03d%03d%03d%03d\n", $1,$2,$3,$4); }';
}

get_archive_type() {
        case "$1" in
                "accounting" )          LAST_RAR_VERSION="3.0.92.51";;
                "accountingbase" )      LAST_RAR_VERSION="3.0.92.51";;
                "hrm" )                 LAST_RAR_VERSION="3.1.17.171";;
                "*" )                   echo "Unknown conf type: $1 in get_archive_type function";
                                        exit 1;;
        esac
        if [ "$(version "$2")" -le "$(version "$LAST_RAR_VERSION")" ]; then
                UPDSETUP_EXT="exe"
                UNPACK_PROGRAM="unrar x"
        else
                UPDSETUP_EXT="zip"
                UNPACK_PROGRAM="unzip"
        fi
}

check_variables
check_arguments "$1"
get_cookies

clear

curl -s -b /tmp/cookies.txt https://releases.1c.ru/project/${DOWNLOAD_VER} |

    grep "a href=\"/version_files?nick=${DOWNLOAD_VER}" |
    tr -s '="  ' ' ' |
    awk -F ' ' '{print $5}' |
    sort -V | pr -a -T -5 #|tail -5
read -i "${PREFIX}." -p "Input version for download: " -e VER

if [[ -z "$VER" ]];then
    echo "VERSION not set"
    exit 1
fi

if [[ "${PREFIX}." = "$VER" ]];then
    echo "Need full VERSION number"
    exit 1
fi

VER1=${VER//./_}

case "$1" in
        "platform" )
                        if [[ $(echo -e $NEW_VER\\n$VER |sort -V|head -1) = $NEW_VER ]]; then
                          CLIENTLINK=$(curl -s -G \
                            -b /tmp/cookies.txt \
                            --data-urlencode "nick=Platform83" \
                            --data-urlencode "ver=$VER" \
                            --data-urlencode "path=Platform\\$VER1\\client_$VER1.rpm64.tar.gz" \
                            https://releases.1c.ru/version_file | grep -oP '(?<=a href=")[^"]+(?=">Скачать дистрибутив<)')

                          SERVERLINK=$(curl -s -G \
                            -b /tmp/cookies.txt \
                            --data-urlencode "nick=Platform83" \
                            --data-urlencode "ver=$VER" \
                            --data-urlencode "path=Platform\\$VER1\\rpm64_$VER1.tar.gz" \
                            https://releases.1c.ru/version_file | grep -oP '(?<=a href=")[^"]+(?=">Скачать дистрибутив<)')

                          THIN32LINK=$(curl -s -G \
                            -b /tmp/cookies.txt \
                            --data-urlencode "nick=Platform83" \
                            --data-urlencode "ver=$VER" \
                            --data-urlencode "path=Platform\\$VER1\\setuptc_$VER1.rar" \
                            https://releases.1c.ru/version_file | grep -oP '(?<=a href=")[^"]+(?=">Скачать дистрибутив<)')

                          THIN64LINK=$(curl -s -G \
                            -b /tmp/cookies.txt \
                            --data-urlencode "nick=Platform83" \
                            --data-urlencode "ver=$VER" \
                            --data-urlencode "path=Platform\\$VER1\\setuptc64_$VER1.rar" \
                            https://releases.1c.ru/version_file | grep -oP '(?<=a href=")[^"]+(?=">Скачать дистрибутив<)')
                        fi

                        mkdir -p dist

                        curl --fail -b /tmp/cookies.txt -o dist/${VER}_client64.tar.gz -L "$CLIENTLINK"
                        curl --fail -b /tmp/cookies.txt -o dist/${VER}_server64.tar.gz -L "$SERVERLINK"

                        mkdir dist/windows

                        curl --fail -b /tmp/cookies.txt -o dist/${VER}_setuptc.rar -L "$THIN32LINK"

                        rmdir dist/windows
                        ;;

        * )
                        echo "nick=${DOWNLOAD_VER}"
                        echo "ver=$VER"
                        get_archive_type $1 $VER
                        echo "path=${DOWNLOAD_VER:0:-2}\\$VER1\\${DOWNLOAD_VER:0:-2}_${VER1}_updsetup.$UPDSETUP_EXT"
                        CONF=$(curl -s -G \
                          -b /tmp/cookies.txt \
                          --data-urlencode "nick=${DOWNLOAD_VER}" \
                          --data-urlencode "ver=$VER" \
                          --data-urlencode "path=${DOWNLOAD_VER:0:-2}\\$VER1\\${DOWNLOAD_VER:0:-2}_${VER1}_updsetup.$UPDSETUP_EXT" \
                          https://releases.1c.ru/version_file | grep -oP '(?<=a href=")[^"]+(?=">Скачать дистрибутив<)')

                        [ -d  1c_config/${DOWNLOAD_VER:0:-2}_${VER}/ ] && rm -rf 1c_config/${DOWNLOAD_VER:0:-2}_${VER}
                        mkdir -p 1c_config/${DOWNLOAD_VER:0:-2}_${VER}

                        curl --fail -b /tmp/cookies.txt -o 1c_config/${DOWNLOAD_VER:0:-2}_${VER}/updsetup.$UPDSETUP_EXT -L "$CONF"
                        if [[ $? -ne 0 ]]; then exit 1; fi

                        ;;
esac

rm /tmp/cookies.txt

Теги:

Похожие темы (5)

35274

Ответов: 6
Просмотров: 8495

77600

Ответов: 5
Просмотров: 241

61190

Ответов: 4
Просмотров: 1542

Рейтинг@Mail.ru Rambler's Top100

Поиск