Автор скриптаhttps://github.com/Infactum/onec_dock). Большое ему спасибо. Я просто сделал скрипт немного удобнее.
Скрипт предназначен для скачивания дистрибутива 1С для ubuntu/debian 64 в терминале.
#20190215 добавлена возможность скачивать скриптом "старые" версии.
Это очень полезно, когда админу приходится обновлять сервер из сети с плохим качеством связи или очень дорогим трафиком. Или админ просто любит терминал. :-)
Если в Вашей системе не установлен curl, добавить его можно командой
sudo apt install curl
Очень полезной для изучения может быть команда screen С помощью нее можно не переживать при разрывах соединения ssh с удаленным сервером. Закачка будет продолжаться. Ну, или можно просто запускать скрипт в фоновом режиме.
#!/bin/bash
#20190215
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=")[^"]+(?=")')
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 -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 \
-b /tmp/cookies.txt \
--data-urlencode "nick=Platform83" \
--data-urlencode "ver=$VER" \
--data-urlencode "path=Platform\\$VER1\\client_$VER1.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\\$VER1\\deb64_$VER1.tar.gz" \
https://releases.1c.ru/version_file | grep -oP '(?<=a href=")[^"]+(?=">Скачать дистрибутив<)')
else
# Old version filename
CLIENTLINK=$(curl -s -G \
-b /tmp/cookies.txt \
--data-urlencode "nick=Platform83" \
--data-urlencode "ver=$VER" \
--data-urlencode "path=Platform\\${VER1}\\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\\${VER1}\\deb64.tar.gz" \
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"
rm /tmp/cookies.txt
С уважением.