Коржов Михаил

26
Рейтинг

KiborG85
Михаил Коржов



  •   Регистрация: 16.02.2011 (13 лет назад)

  •   Был(а) на сайте: 30.03.2024

Друзья
  • Дмитрий Малышев
  • Виктор Гуленко
  • Евгений Комиссаров
Подписчики 5

Рейтинг 26

Мониторинг выхода обновлений конфигураций

Инструменты и обработки Системный администратор Linux Абонемент ($m) Архив с данными Инструменты администратора БД

Надоело ежедневно сидеть на сайте 1Сном в ожидании информации что вышел новый релиз конфигурации? А сторонними программами мониторинга пользоваться не хочется? Тогда напишем такой мониторинг самостоятельно!

1 стартмани

07.09.2019    8965    2    KiborG85    0       

4

Защита терминального сервера от подбора пароля

Статья Системный администратор Windows Абонемент ($m) Архив с данными Пароли

Да, не все терминальные сервера есть возможность спрятать за ВПН. Но и смена порта подключения (стандартный 3389) тоже не решает все проблемы. Написал скрипт на PowerShell, который блокирует или не блокирует соединения.

1 стартмани

06.09.2019    10096    8    KiborG85    3       

17

Комментарии

AdminМониторинг выхода обновлений конфигураций#0 07.09.19 0:00
Надоело ежедневно сидеть на сайте 1Сном в ожидании информации что вышел новый релиз конфигурации? А сторонними программами мониторинга пользоваться не хочется?
Тогда напишем такой мониторинг самостоятельно!
AdminЗащита терминального сервера от подбора пароля#3 06.09.19 16:09
(2) На панацею не претендую, но как идея (хотя бы отправная точка) - вполне себе так да.
VPN - поверьте, не всегда есть возможность. К примеру, если это какой-то демонстрационный сервер, доступ к которому должен быть наименее трудозатратный. Чтоб любой бухгалтер мог подключиться без настроек RDG и тем более VPN любого рода (некоторые при попытке подключиться такую дичь творят...)
А по поводу открытости кода - да, он открыт. Как доберусь до GitHub (в смысле зарегистрируюсь) - то можно будет там публиковать... А тут не бесплатно потому-что и себе иногда нужна местная валюта для скачивания чего-то срочно нужного.
AdminЗащита терминального сервера от подбора пароля#0 06.09.19 13:00
Да, не все терминальные сервера есть возможность спрятать за ВПН. Но и смена порта подключения (стандартный 3389) тоже не решает все проблемы.
Написал скрипт на PowerShell, который блокирует или не блокирует соединения.
AdminКак скачать дистрибутивы 1С ubuntu/debian в терминале#16 12.04.19 8:47
(15) для статьи это довольно "ускоспециализированный" скрипт... для франчей к примеру. Та и если бы ещё написать его же на PowerShell и предоставить и такой и такой вариант - вот это было бы интересней :)

По поводу распаковки архива - если честно не сильно старался... Сделал несколько попыток и отложил это на потом. Мне сперва было актуально информирование сотрудников. Осталось некое чувство не завершённости, теперь можно будет заняться и распаковкой. :)
AdminКак скачать дистрибутивы 1С ubuntu/debian в терминале#14 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/\&amp;/\&/')
                        echo "URL is" $URL #(echo $body | cut -f2 -d'"' | sed 's/\&amp;/\&/')
                        ver=$(echo $body | sed 's/.*ver=//' | cut -f1 -d'"')
                        echo "ver = " $ver
                        nick=$(echo $body | cut -f2 -d'"' | sed 's/\&amp;/\&/' | 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/<BR>/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
AdminКак скачать дистрибутивы 1С ubuntu/debian в терминале#12 10.04.19 17:21
Большое спасибо!
На основе этого скрипта организовал скачивание релизов.
А точнее: парсинг RSS новостей от 1С, скачивание нужных мне релизов (тут спасибо вашей статье), и публикация информации в живойЛенте Б24 через Rest API
НовостиОпрос по используемой СУБД: участвуйте и выиграйте 100 стартмани#318 20.11.18 19:19
Франчайзи, элементы аренды 1С.
Несколько MsSQL серверов, куча довольно мелких баз (в основном до 10Гб). Одновременно пользователей примерно 100 (в разных базах).
MsSQL выбрана так как 1С как более оптимизированная для работы с Ms решением.
SoftwareОграничить количество сеансов с базой#10 23.08.18 13:33
(9) база типовая и не хочется её раскавыривать.
SoftwareОграничить количество сеансов с базой#8 30.07.18 10:15
(7) ещё не решил... пока только набросал мысли (законспектировал). Потом попробую как время будет
SoftwareОграничить количество сеансов с базой#6 27.07.18 9:16
Теория:
1. Создаём ещё один сервер приложения;
2. к основному серверу приложения (где выполняются клиентские подключения, фоновые задания и пр) добавляем новый;
3. на основном сервере приложения запрещаем выдавать лицензии для нужной нам базы. А на новом - запрещаем всё кроме как выдача лицензий для нужной базы. (настраивается всё в требованиях рабочих серверов).

По итогу мы можем на конкретную базу ограничить кол-во сессий. И оперативно добавлять\убавлять. Но для каждой такой базы нужно поднимать отдельный сервер 1Сный и цеплять его в кластер. Эти дополнительные сервера (которые только и будут выдавать лицензии) могут быть на той же линуксовой машинке с аппатчем, на разнесённых портах.