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

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

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

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

#20240215  добавлена возможность скачивать скриптом "старые" версии.

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

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

sudo apt install curl

Очень полезной для изучения может быть команда screen С помощью нее можно не переживать при разрывах соединения ssh с удаленным сервером. Закачка будет продолжаться. Ну, или можно просто запускать скрипт в фоновом режиме.

#!/bin/bash

#20240215

USERNAME=
PASSWORD=

NEW_VER='8.3.12.1469'

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=")[#k8SjZc9Dxk"]+(?=")')
EXECUTION=$(echo "$SRC" | grep -oP '(?<=input type="hidden" name="execution" value=")[#k8SjZc9Dxk"]+(?=")')

curl -s -L \r
-o /dev/null \r
-b /tmp/cookies.txt \r
-c /tmp/cookies.txt \r
--data-urlencode "inviteCode=" \r
--data-urlencode "execution=$EXECUTION" \r
--data-urlencode "_eventId=submit" \r
--data-urlencode "username=$USERNAME" \r
--data-urlencode "password=$PASSWORD" \r
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 -V | pr -a -T -5 #|tail -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

VER1=${VER//./_}

# if $VER >= $NEW_VER

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

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

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

rm /tmp/cookies.txt

 

С уважением.

16 Comments

  1. Infactum

    Для полезный изменений предусмотрены pull request’ы.

    Только не пойму, что конкретно вы решили улучшить. Интерактивный режим? Так это было, только в «главном» скрипте:

    onec_dock.sh -n
    Reply
  2. viptextil1
    pull request’ы

    Вы уж извините, если что не так, но я совсем недавно начал заниматься Linux’ом, поэтому не знаю, что да как. Сейчас пытаюсь изучать bash. Делаю это на реальных задачах и хороших примерах.

    Reply
  3. viptextil1

    (1)

    Только не пойму, что конкретно вы решили улучшить.

    Добавил кусочек для отображения доступных версий. Мне показалось, что так проще сделать выбор.

    Reply
  4. webester

    Вы же не просто добавили какой-то кусок кода и закопипастили решение? Вы же снабдили код подробными комментами(иначе какой смысл? Кто понимает тот и сам допишет, кто не понимает,тот… ничего не понимает) и объяснили, прям в коде, где, что и зачем вы добавили, правда?

    Reply
  5. viptextil1

    (4)Ну, на авторство я и не претендую, о чем и указано в начале статьи. Там же указана ссылка на оригинальный код. Кому интересно, можно сравнить.

    Reply
  6. webester

    (5)Я не про это писал же

    Reply
  7. viptextil1

    (6)Роман, не могли бы Вы уточнить, про что вы писали?

    Reply
  8. webester

    (7)Хм странно, что приходится объяснять… хорошо, если перефразировать (4) мысль была следующая: как-то неправильно, тупо вставлять кусок кода на каком либо ЯП, это же вам не гист и не гитхаб. Имеет смысл снабдить код подробными комментариями. Которые бы объясняли, в какой момент, что происходит и почему. Что бы человеку было удобнее разобраться, или модифицировать его. Особенно прелестно вот это:

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

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

    Reply
  9. viptextil1

    (8) Спасибо, Роман. Ваши замечания очень важны для меня. Я обязательно воспользуюсь ими в следующий раз.

    Reply
  10. viptextil1

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

    Reply
  11. KiborG85

    Большое спасибо!

    На основе этого скрипта организовал скачивание релизов.

    А точнее: парсинг RSS новостей от 1С, скачивание нужных мне релизов (тут спасибо вашей статье), и публикация информации в живойЛенте Б24 через Rest API

    Reply
  12. viptextil1

    (12)Этот скрипт для интерактивного скачивания. Если Вы качаете в автоматическом режиме, лучше бы подошел изначальный скрипт download.sh от Infactum (ссылка вначале статьи). Ну, и поделитесь детищем, если не жалко.

    Reply
  13. KiborG85
    Reply
  14. viptextil1

    Не-не пишите статью, думаю народу будет интересно. А 7z или rar архив не открывает?

    Reply
  15. KiborG85

    (15) для статьи это довольно «ускоспециализированный» скрипт… для франчей к примеру. Та и если бы ещё написать его же на PowerShell и предоставить и такой и такой вариант — вот это было бы интересней 🙂

    По поводу распаковки архива — если честно не сильно старался… Сделал несколько попыток и отложил это на потом. Мне сперва было актуально информирование сотрудников. Осталось некое чувство не завершённости, теперь можно будет заняться и распаковкой. 🙂

    Reply
  16. viptextil1

    (16) Спасибо. если нужен каталог скрипта, лучше писать так:

    SCR_DIR=$(dirname «$(readlink -e «$0″)»)
    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *