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С
Санкт-Петербург
По совместительству

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

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

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

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