Skip to main content

python-rac

python-rac

Клиент администрирования кластеров 1С через RAS. Говорит с сервером администрирования напрямую по TCP на Python: бинарный rac из платформы не нужен. Одна библиотека и четыре интерфейса.

Дистрибутив на PyPI называется python-rac, а в коде импортируется как pyrac (имя pyrac на PyPI принадлежит другому проекту).

Возможности

  • Протокол по умолчанию — auto («Автоматически»): согласует максимум версий сервера, читает и пишет (RAS 8.5.1 — версией 16.0, RAS 8.5.4 — 22.0); явная N.0 читает, а пишет, только если N равна максимуму сервера. Версия 10.0 — платформы новее 8.3.15, а не 8.3.11 (таблица «версия → платформа» в docs/protocol.md).
  • Чтение кластеров, серверов, процессов, ИБ, сеансов, соединений, блокировок, профилей безопасности, счётчиков, ограничений, правил и настроек сервисов.
  • Защищённые изменения: каждое с повторным чтением и сверкой результата.
  • Интерфейсы: библиотека asyncio, CLI, веб-консоль, настольная консоль, MCP-сервер.
  • Несколько RAS в одной консоли (до 64); серверы, добавленные вручную, сохраняются в файле настроек.
  • Автопоиск серверов RAS по диапазонам адресов (IP, CIDR, имена с числовым суффиксом).
  • Вход по логину и паролю администратора для любых чтений и изменений; отдельные учётные данные администратора информационной базы (не проверены на живом RAS); пароли хранятся в связке ключей ОС (или в файле настроек).
  • Веб-консоль со входом по учётным записям и ролям (web и desktop), образ Docker и exe настольной консоли для Windows.

Установка

Python 3.11+.

python -m pip install python-rac                 # библиотека, CLI, веб-консоль
python -m pip install 'python-rac[desktop]'      # + настольная консоль (PySide6, keyring)
python -m pip install 'python-rac[mcp]'          # + MCP-сервер
python -m pip install 'python-rac[secrets]'      # + keyring: пароли в связке ключей ОС (для web)
python -m pip install 'python-rac[keys]'         # + вход по открытому ключу RAS 8.5.4 (cryptography; входит в desktop и mcp)

Быстрый старт

Библиотека

import asyncio
from pyrac import RacClient

async def main():
    async with RacClient('127.0.0.1', 1545) as rac:
        print(await rac.list_clusters())

asyncio.run(main())

CLI — команды как у rac

pyrac --ras-host=127.0.0.1 cluster list
pyrac --ras-host=127.0.0.1 infobase --cluster=UUID summary list

Веб-консоль (Vue SPA, Node.js не нужен; --ras-host необязателен: адрес по умолчанию localhost:1545 добавляется, только если параметр указан или в настройках нет серверов, а сам адрес вы не удаляли: удалённые адрес по умолчанию и найденные серверы запоминаются как скрытые)

pyrac-web --ras-host=127.0.0.1        # http://127.0.0.1:8080/
pyrac-web --ras-host=127.0.0.1 --read-only    # только чтение

Настольная консоль

pyrac-desktop --ras-host=127.0.0.1

Для Windows есть готовый exe без Python (артефакты CI, docs/desktop.md; exe не подписан).

Docker (веб-консоль с входом по учётным записям; подробности и HTTPS — в docs/docker.md)

mkdir secrets && printf '%s' 'пароль-администратора' > secrets/master_password.txt   # пароль первого администратора admin
cp .env.example .env && docker compose up -d --build     # http://localhost:8080/

MCP-сервер (stdio)

pyrac-mcp --ras-host=127.0.0.1

Безопасность

  • Изменение поведения в 0.4.0: веб-консоль и настольная консоль по умолчанию разрешают все совместимые операции изменения (раньше только читали). --read-only отключает изменения; явные --allow-<операция> включают только перечисленные. MCP по умолчанию только читает (82 флага --allow-*).
  • Изменения безопасны версией записи, равной максимуму версий сервера: auto (по умолчанию) пишет везде, явная 16.0 — на RAS 8.5.1, 22.0 — на RAS 8.5.4; явная версия ниже максимума сервера только читает (запись версией ниже максимума стёрла бы поля новее); на старых платформах запись проверена только эмуляцией; права на изменения задают роли учётных записей (web и desktop).
  • Перед выполнением нужно ввести точную строку подтверждения (например, UUID объекта); успех засчитывается после повторного чтения состояния.
  • Пароль администратора RAC идёт по сети открытым текстом (ограничение протокола): подключайтесь через VPN или SSH-туннель. Пароли только записываются: интерфейсы их не возвращают, CLI не принимает их в аргументах.
  • Вход всегда по логину и паролю учётной записи (роли Администратор, Оператор, Наблюдатель и пользовательские; области: везде, группа, сервер, строка автопоиска). Для доступа по сети используйте прокси с HTTPS; встроенного TLS нет. Подробности — в docs/security.md.
  • Исключение — CLI и библиотека: там нет флагов и подтверждений, команды изменяют RAS сразу. Проверяйте изменения на собственном изолированном стенде, а не на производственном кластере.
  • Покрытие команд rac неполное, многие операции проверены только на изолированном RAS 8.5.1 или тестами; ограничения собраны в docs/limitations.md.

Документация

Опубликованная справочная документация с описанием API классов: https://platform42.gitlab.io/python-rac/ (GitLab Pages; собирается из docs-site/, локальная сборка — в docs/development.md).

Документ О чём
docs/index.md Карта документации
docs/getting-started.md Установка и первый запуск
docs/troubleshooting.md Диагностика: журнал pyrac.log, что приложить к отчёту об ошибке
docs/library.md, docs/cli.md Библиотека и командная строка
docs/web.md, docs/desktop.md, docs/mcp.md Веб-консоль, настольная консоль, MCP
docs/operations.md Операции изменения, флаги --allow-* и --read-only
docs/settings.md, docs/discovery.md Файл настроек и автопоиск серверов
docs/security.md, docs/limitations.md Модель безопасности и известные ограничения
docs/docker.md Веб-консоль в контейнере
docs/protocol.md, docs/rac-command-coverage.md Протоколы и покрытие команд
docs/architecture.md, docs/development.md Устройство и разработка
CHANGELOG.md История изменений

Разработка

python -m pip install -e '.[desktop,mcp]' pytest
python -m pytest tests/ -q          # для Qt: QT_QPA_PLATFORM=offscreen

Исходники интерфейса веб-консоли — в web-ui/ (см. web-ui/README.md). Выпуск на PyPI выполняется вручную: docs/pypi-release.md.

Лицензия

MIT

Metadata

Release files for python-rac 1.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for python-rac 1.2.1
File Size Uploaded Provenance
python_rac-1.2.1.tar.gz 1.1 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for python-rac 1.2.1
File Interpreter ABI Platform
python_rac-1.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 2.0 MB

Release files / python_rac-1.2.1.tar.gz

Download URL python_rac-1.2.1.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
b6162959a3a675ed31a10cbcfb6f881e97a2fda7a72f55e77f65189971430ab5
BLAKE2b-256 checksum
How to use checksums
fcd8a18f951844d86c43969232430855439f14d69b899f9ad5e011c6a82b31da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.17

Release files / python_rac-1.2.1-py3-none-any.whl

Download URL python_rac-1.2.1-py3-none-any.whl
Size 848.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c1c9b00c46161697e9cce8b1729945852ec0eab098008fa3a3b58d103f49b8c4
BLAKE2b-256 checksum
How to use checksums
35bb44883770d52eaef6eb79124a5b654b2d6e678668126abeda7b01abf00599
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.17

Security for python-rac 1.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.2.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page