Управление конфигуратором в режиме агента с помощью python

06.08.20

База данных - Архивирование (backup)

Управление конфигуратором 1С:Предприятие в режиме агента. Опыт применения с реализацией на языке python. Результат получен с использованием интерактивной сессии оболочки через invoke_shell().

В статье "Режим агента конфигуратора" технологического блога 1С приводится пример управления конфигуратором с помощью языка python.


import paramiko

host = '127.0.0.1'
user = 'login'
secret = 'password'
port = 1543

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=host, port=port, username=user, password=secret)

stdin, stdout, stderr = client.exec_command('common connect-ib')
data = stdout.read() + stderr.read()

// Тут подразумевается код команд конфигуратору после подключения к базе

stdin, stdout, stderr = client.exec_command('common disconnect-ib')
data = stdout.read() + stderr.read()

client.close()

Оригинал кода можно посмотреть по ссылке выше. Я попробовал воспроизвести этот код. Проблема возникла в том, что метод exec_command() после выполнения одной команды закрывает сессию. Поэтому таким способом нельзя выполнить две команды последовательно в рамках одного подключения, созданного методом client.connect(hostname=host, username=user, password=secret, port=port). Следовательно, после подключения к базе командой 'common connect-ib' любую другую команду для базы уже выполнить нельзя, используя exec_command().


Я пошел другим путем. Запуск конфигуратора в режиме агента из командной строки с помощью subprocess.Popen(). Параметры командной строки есть в Руководстве администратора ИТС.


/F - путь к базе
/AgentMode - режим агента
/AgentSSHHostKeyAuto - ключ для подключения берется из файла host_id в директории 1С
/AgentBaseDir - путь к директории, с которой будет работать конфигуратор для загрузки/выгрузки файлов.
/Visible - режим видимости агента, появляется окно при запуске конфигуратора в этом режиме

import subprocess
import paramiko
import time

p = subprocess.Popen([r'c:\Program Files (x86)\1cv8\8.3.15.1830\bin\1cv8.exe', 
                      r'DESIGNER', 
                      r'/F d:\Test', r'/AgentMode', r'/AgentSSHHostKeyAuto', 
                      r'/AgentBaseDir d:\Test\Agent', r'/Visible'])

time.sleep(5)

host = '127.0.0.1'
user = 'Admin'
secret = '123'
port = 1543

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=host, port=port, username=user, password=secret)

transport = client.get_transport()
channel = transport.open_session()
channel.invoke_shell()
print(channel.recv(5000).decode('utf-8'))

channel.send('options set --show-prompt=no\n')
time.sleep(3)
print('Нет коммандной строки: ' + channel.recv(5000).decode('utf-8'))  

channel.send('common connect-ib\n')
time.sleep(1)
print('Подключение к базе: ' + channel.recv(5000).decode('utf-8'))

channel.send(r'config dump-cfg --file=\1Cv8.cf' + '\n') 
while not channel.recv_ready():
    i = 0
print('Выгрузка конфигурации: ' + channel.recv(5000).decode('utf-8'))
time.sleep(1)

channel.send('common disconnect-ib\n')
time.sleep(1)
print('Отключение от базы: ' + channel.recv(5000).decode('utf-8'))

channel.send('common shutdown\n')
time.sleep(1)
print('Завершение работы: ' + channel.recv(5000).decode('utf-8'))

channel.close()

client.close()

print("конец программы")

Я использовал получение интерактивной сессии оболочки через invoke_shell(). После этого можно отправлять команды конфигуратору через сообщения channel.send('common connect-ib\n'), при этом канал остается открытым и ответ сервера можно получить через channel.recv(). При отправке команд через сообщения обязательно строка команды должна заканчиваться '\n' (переход строки).


'options set --show-prompt=no\n' - отключает приглашение 'designer>' в командной строке
'common connect-ib\n' - подключение к информационной базе
'config dump-cfg --file=\1Cv8.cf' - выгрузка файла конфигурации в заданную директорию
'common disconnect-ib\n' - отключение от информационной базы
'common shutdown\n' - завершение работы конфигуратора

конфигуратор режимагента python администрирование

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    17008    119    59    

120

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

15000 руб.

10.11.2023    12439    49    33    

70

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 18.09.2024, версия 1.2

18000 руб.

06.12.2023    11372    48    8    

78

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    34293    109    152    

75

Тестирование QA DevOps и автоматизация разработки Программист Пользователь Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Платные (руб)

Автотесты 1С - готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарий – feature-файл, разработанный с помощью vanessa-automation. Запуск сценария выполняется интерактивно с помощью vanessa-automation или с помощью vanessa-runner в CI-системах. Доступно тестирование тонкого клиента. Поддерживаемые версии конфигураций 1С:Бухгалтерия предприятие 3.0 и версии КОРП: 3.0.166.17.

2160 руб.

20.01.2022    8483    30    0    

15

DevOps и автоматизация разработки Программист Стажер Платные (руб)

Данный онлайн-курс (интенсив) предусматривает изучение процессов, инструментов и методик DevOps, их применение при разработке на платформе 1С. 

2500 руб.

20.06.2023    24486    20    4    

321

Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Брандмауэр для сервера 1С включает в себя управление возможностью начала и возобновления сеансов пользователей по различным условиям, ограничение общего числа возможных сеансов для работы с информационной базой, резервирование возможности работы с информационной базой определенных польззователей, запрет запуска нескольких сеансов для пользователя, журнализация событий начала (возобновления) и завершения (гибернации) сеансов, ведение списка активных сеансов для информационных баз кластера серверов

3600 руб.

06.02.2017    32849    145    18    

51
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Бэнни 210 18.08.20 15:07 Сейчас в теме
Поставил плюс. Еще бы кейс какой-то хороший разобрали вообще цены не было бы.
Alex10166; +1 Ответить
2. Alex10166 33 28.08.20 18:20 Сейчас в теме
(1) Спасибо ! К сожалению, не было какой-либо реальной задачи с применением режима Агента для конфигуратора. Хотелось просто "прощупать" этот инструмент. Да и довольно мало команд пока реализовано под этот режим. Только самые простые. Если только автоматизировать обновление конфигурации базы.
Оставьте свое сообщение