Как скачать дистрибутивы 1С ubuntu/debian в терминале

Администрирование - Системное

Скрипт для скачивания дистрибутивов 1С ubuntu/debian в терминале.

Автор скриптаhttps://github.com/Infactum/onec_dock). Большое ему спасибо. Я просто сделал скрипт немного удобнее.

Скрипт предназначен для скачивания дистрибутива 1С для ubuntu/debian 64 в терминале.

Это очень полезно, когда админу приходится обновлять сервер из сети с плохим качеством связи или очень дорогим трафиком. Или админ просто любит терминал. :-)

Если в Вашей системе не установлен curl, добавить его можно командой

sudo apt install curl

Очень полезной для изучения может быть команда screen

#!/bin/bash

USERNAME=
PASSWORD=

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

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

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

clear

curl -s -b /tmp/cookies.txt https://releases.1c.ru/project/Platform83 |

    grep 'a href="/version_files?nick=Platform83' |
    tr -s '="  ' ' ' |
    awk -F ' ' '{print $5}' |
    sort -Vr | pr -T -5

read -i "8.3." -p "Input version for download: " -e VER

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

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

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


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"

rm /tmp/cookies.txt

С уважением.

См. также

Комментарии
1. Егор Иванов (Infactum) 259 16.04.18 15:31 Сейчас в теме
Для полезный изменений предусмотрены pull request'ы.
Только не пойму, что конкретно вы решили улучшить. Интерактивный режим? Так это было, только в "главном" скрипте:
onec_dock.sh -n
3. Oleg Germanenko (viptextil1) 12 16.04.18 16:31 Сейчас в теме
(1)
Только не пойму, что конкретно вы решили улучшить.

Добавил кусочек для отображения доступных версий. Мне показалось, что так проще сделать выбор.
2. Oleg Germanenko (viptextil1) 12 16.04.18 16:27 Сейчас в теме
pull request'ы


Вы уж извините, если что не так, но я совсем недавно начал заниматься Linux'ом, поэтому не знаю, что да как. Сейчас пытаюсь изучать bash. Делаю это на реальных задачах и хороших примерах.
4. Роман Ложкин (webester) 28 16.04.18 17:50 Сейчас в теме
Вы же не просто добавили какой-то кусок кода и закопипастили решение? Вы же снабдили код подробными комментами(иначе какой смысл? Кто понимает тот и сам допишет, кто не понимает,тот... ничего не понимает) и объяснили, прям в коде, где, что и зачем вы добавили, правда?
5. Oleg Germanenko (viptextil1) 12 16.04.18 18:29 Сейчас в теме
(4)Ну, на авторство я и не претендую, о чем и указано в начале статьи. Там же указана ссылка на оригинальный код. Кому интересно, можно сравнить.
6. Роман Ложкин (webester) 28 17.04.18 02:26 Сейчас в теме
7. Oleg Germanenko (viptextil1) 12 17.04.18 06:41 Сейчас в теме
(6)Роман, не могли бы Вы уточнить, про что вы писали?
8. Роман Ложкин (webester) 28 17.04.18 09:19 Сейчас в теме
(7)Хм странно, что приходится объяснять... хорошо, если перефразировать (4) мысль была следующая: как-то неправильно, тупо вставлять кусок кода на каком либо ЯП, это же вам не гист и не гитхаб. Имеет смысл снабдить код подробными комментариями. Которые бы объясняли, в какой момент, что происходит и почему. Что бы человеку было удобнее разобраться, или модифицировать его. Особенно прелестно вот это:
Очень полезной для изучения может быть команда screen

Что в ней особенно полезного в данном конкретном случае, нужно догадаться самому. Если уж не поленились запилить статью, постарайтесь сделать ее максимально удобной и полезной. В этом был смысл (4)
9. Oleg Germanenko (viptextil1) 12 18.04.18 12:31 Сейчас в теме
(8) Спасибо, Роман. Ваши замечания очень важны для меня. Я обязательно воспользуюсь ими в следующий раз.
Оставьте свое сообщение