0. viptextil1 16 16.04.18 10:51 Сейчас в теме

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

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

Перейти к публикации

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

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


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

Что в ней особенно полезного в данном конкретном случае, нужно догадаться самому. Если уж не поленились запилить статью, постарайтесь сделать ее максимально удобной и полезной. В этом был смысл (4)
9. viptextil1 16 18.04.18 12:31 Сейчас в теме
(8) Спасибо, Роман. Ваши замечания очень важны для меня. Я обязательно воспользуюсь ими в следующий раз.
11. viptextil1 16 10.08.18 08:54 Сейчас в теме
На сайте 1с были изменены имена файлов (в лучшую сторону, на мой взгляд), но скрипт пришлось чуть-чуть подправить.
12. KiborG85 24 10.04.19 17:21 Сейчас в теме
Большое спасибо!
На основе этого скрипта организовал скачивание релизов.
А точнее: парсинг RSS новостей от 1С, скачивание нужных мне релизов (тут спасибо вашей статье), и публикация информации в живойЛенте Б24 через Rest API
13. viptextil1 16 11.04.19 08:22 Сейчас в теме
(12)Этот скрипт для интерактивного скачивания. Если Вы качаете в автоматическом режиме, лучше бы подошел изначальный скрипт download.sh от Infactum (ссылка вначале статьи). Ну, и поделитесь детищем, если не жалко.
14. KiborG85 24 11.04.19 15:34 Сейчас в теме
Если сильно пинать не будите за карявизну и криворукость, то вот:
 cat /home/myscrypt/1crss_v2.sh
#!/bin/bash
USERNAME=1c_partner_login
PASSWORD=1c_partner_password
DIR="/home/myscrypt"
configdir="/folder/share/1c_config/83"
b24url=b24portal.bitrix24.ua/rest
b24API=20/hfnz84ux67jds8
SRC=$(curl -c /tmp/cookies.txt -s -L releases.1c.eu)
RSS_URL=news.webits.1c.ru/news/updates_ru_eu/rss

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" \
    login.1c.eu"$ACTION"

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


cd $DIR

#формируем список решений, который нас интересует
echo Продукт=Бухгалтерия для Украины > $DIR/myproducts
echo Продукт=Управление производственным предприятием для Украины >> $DIR/myproducts
echo Продукт=Управление торговым предприятием для Украины >> $DIR/myproducts
echo Продукт=Зарплата и Управление Персоналом для Украины >> $DIR/myproducts
echo Продукт=Общепит для Украины >> $DIR/myproducts
echo Продукт=Управление небольшой фирмой для Украины >> $DIR/myproducts
echo Продукт=Управление торговлей для Украины >> $DIR/myproducts
echo Продукт=Бухгалтерія будівельної організації >> $DIR/myproducts
echo Продукт=Бухгалтерия элеватора, мельницы и комбикормового завода для Украины >> $DIR/myproducts
#echo >> $DIR/myproducts


wget ${RSS_URL} -o $DIR/rssfile
for (( i=40; i > 0; i-- ))
do
guid=$(cat $DIR/rss | xmlstarlet sel -t -v "/rss/channel/item["$i"]/guid")
title=$(cat $DIR/rss | xmlstarlet sel -t -v "/rss/channel/item["$i"]/title")
body=$(cat $DIR/rss | xmlstarlet sel -t -v "/rss/channel/item["$i"]/description" | sed 's/&amr/&/')
vid=$(cat $DIR/rss | xmlstarlet sel -t -v "/rss/channel/item["$i"]/category[2]")
product=$(cat $DIR/rss | xmlstarlet sel -t -v "/rss/channel/item["$i"]/category[1]")
pubDate=$(cat $DIR/rss | xmlstarlet sel -t -v "/rss/channel/item["$i"]/pubDate")
grep -q $guid "$DIR/rsslog" || (

        if [[ $product =~ $(echo ^\($(paste -sd'|' $DIR/myproducts)\)$) ]]
                then
                if [[ $vid = "Вид новости обновлений=Публикация новой версии" ]]
                        then
                        echo "Бегом! Качать! " $title
                        echo "Body = " $body
                        URL=$(echo $body | cut -f2 -d'"' | sed 's/\&/\&/')
                        echo "URL is" $URL #(echo $body | cut -f2 -d'"' | sed 's/\&/\&/')
                        ver=$(echo $body | sed 's/.*ver=//' | cut -f1 -d'"')
                        echo "ver = " $ver
                        nick=$(echo $body | cut -f2 -d'"' | sed 's/\&/\&/' | cut -f2 -d'=' | sed 's/\&ver//g')
                        echo "NIK = " $nick
                        nicksmal=$(echo $nick | sed 's/[^a-Z]//g')
                        echo "SmalNick = " $nicksmal

                        #создаём папку, куда будем складировать обновления
                        mkdir -p $configdir/$nicksmal/$ver

                        #скачиваем самораспаковывающийся архив обновления конфигурации
                        relizdistributiv=$(curl -s -G \
                            -b /tmp/cookies.txt \
                            --data-urlencode "nick=$nick" \
                            --data-urlencode "ver=$ver" \
                            --data-urlencode "path=$nicksmal\\$(echo $ver | tr '.' '_')\\$(echo $nicksmal)_$(echo $ver | tr '.' '_')_updsetup.exe" \
                            releases.1c.eu/version_file  | grep -oP '(?<=a href=")[^"]+(?=">Скачать дистрибутив<)')

                        curl --fail -b /tmp/cookies.txt -o $configdir/$nicksmal/$ver/$(echo $nicksmal)_$(echo $ver | tr '.' '_')_updsetup.exe -L "$relizdistributiv"


                        # скачиваем описание новости обновления
                        curl -s -G \
                                -b /tmp/cookies.txt \
                                --data-urlencode "nick=$nick" \
                                --data-urlencode "ver=$ver" \
                                --data-urlencode "path=$nicksmal\\$(echo $ver | tr '.' '_')\\news.htm" \
                                -o $configdir/$nicksmal/$ver/news.htm -L releases.1c.eu/version_file

                        # выставляем права на скачанные файлы
                        chmod -R 777 $configdir/$nicksmal/$ver

                        #создаём информационную задачу сотрудникам про выход релиза

                        lynx --dump $configdir/$nicksmal/$ver/news.htm > /tmp/news.txt
                        b24bodytext=$(cat /tmp/news.txt | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n//g' | tr '\n' ' ' | tr '"' '`"`')

                        curlDataZadacha='[{ "TITLE": "Новый релиз конфигурации '$nicksmal' версии '$ver'", "DESCRIPTION": "'$b24bodytext'", "RESPONSIBLE_ID": "1", "ACCOMPLICES": ["232", "1"], "AUDITORS": ["1", "232"]}]'
                        curl -H 'Content-Type: application/json' -d "$curlDataZadacha" $b24url/$b24API/task.item.add

                fi

                if [[ $vid = "Вид новости обновлений=Публикация плана версии" ]]
                        then
                        echo "i = " $i
                        echo "Скооро вйдет " $title
                        echo "Body = " $body
                        echo .

                        fi
                fi
        echo $guid >> $DIR/rsslog
        echo $title >> $DIR/rsslog
        echo $pubDate >> $DIR/rsslog
        echo . >> $DIR/rsslog

        )
done



rm $DIR/rssfile
rm $DIR/rss
rm $DIR/myproducts
Показать

Пришлось в коде убрать все http:// а то они тут, в комментарии, странно срабатывают.

Вот только не придумал как распаковывать скачанный архив $configdir/$nicksmal/$ver/$(echo $nicksmal)_$(echo $ver | tr '.' '_')_updsetup.exe без установки wine
15. viptextil1 16 12.04.19 08:08 Сейчас в теме
Не-не пишите статью, думаю народу будет интересно. А 7z или rar архив не открывает?
16. KiborG85 24 12.04.19 08:47 Сейчас в теме
(15) для статьи это довольно "ускоспециализированный" скрипт... для франчей к примеру. Та и если бы ещё написать его же на PowerShell и предоставить и такой и такой вариант - вот это было бы интересней :)

По поводу распаковки архива - если честно не сильно старался... Сделал несколько попыток и отложил это на потом. Мне сперва было актуально информирование сотрудников. Осталось некое чувство не завершённости, теперь можно будет заняться и распаковкой. :)
17. viptextil1 16 15.04.19 09:59 Сейчас в теме
(16) Спасибо. если нужен каталог скрипта, лучше писать так:
SCR_DIR=$(dirname "$(readlink -e "$0")")
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Ведущий программист 1С
Санкт-Петербург
зарплата от 130 000 руб.
Полный день

Программист 1С
Москва
зарплата от 130 000 руб. до 200 000 руб.
Полный день

Бизнес-архитектор 1С, ведущий консультант
Санкт-Петербург
Полный день

Руководитель проектов 1С
Санкт-Петербург
Полный день

Консультант-методолог 1С
Краснодар
зарплата от 110 000 руб.
Полный день