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

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

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

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

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

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

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

sudo apt install curl

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

#!/bin/bash

#20260215

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 не будет опубликован. Обязательные поля помечены *