python-rac
Клиент администрирования кластеров 1С через RAS. Говорит с сервером администрирования напрямую по TCP на Python: бинарный rac из платформы не нужен. Одна библиотека и четыре интерфейса.
Дистрибутив на PyPI называется
python-rac, а в коде импортируется какpyrac(имяpyracна PyPI принадлежит другому проекту).
Возможности
- Протокол
16.0(1С 8.5.1) — основной; режимautoсогласует максимум версий сервера и читает и пишет; явнаяN.0читает, а пишет, только если N равна максимуму сервера. Версия10.0— платформы новее 8.3.15, а не 8.3.11 (таблица «версия → платформа» в docs/protocol.md). - Чтение кластеров, серверов, процессов, ИБ, сеансов, соединений, блокировок, профилей безопасности, счётчиков, ограничений, правил и настроек сервисов.
- Защищённые изменения: каждое с повторным чтением и сверкой результата.
- Интерфейсы: библиотека
asyncio, CLI, веб-консоль, настольная консоль, MCP-сервер. - Несколько RAS в одной консоли (до 64); серверы, добавленные вручную, сохраняются в файле настроек.
- Автопоиск серверов RAS по диапазонам адресов (IP, CIDR, имена с числовым суффиксом).
- Вход по логину и паролю администратора для любых чтений и изменений; отдельные учётные данные администратора информационной базы (не проверены на живом RAS); пароли хранятся в связке ключей ОС (или в файле настроек).
- Веб-консоль с мастер-паролем, образ 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
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) пишут, явный10.0на RAS 8.5.1 только читает (запись версией ниже максимума стёрла бы поля новее); на старых платформах запись проверена только эмуляцией; веб-консоль без мастер-пароля изменяет только на loopback. - Перед выполнением нужно ввести точную строку подтверждения (например, 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.
Лицензия
Metadata
Release files for python-rac 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| python_rac-1.1.0.tar.gz | 988.6 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| python_rac-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.8 MB
Release files / python_rac-1.1.0.tar.gz
| Download URL | python_rac-1.1.0.tar.gz |
|---|---|
| Size | 988.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6ecbb134b08de736b67b7ef0ec46b35aacf67aa7c03ab57ea09a143be85361c1
|
|
BLAKE2b-256 checksum How to use checksums |
be7a4d13a9ecbade55fbdca64028538357b60c22db78a4fbee49d532421d7352
|
| 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.1.0-py3-none-any.whl
| Download URL | python_rac-1.1.0-py3-none-any.whl |
|---|---|
| Size | 763.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3bd8eb0b5885eb3fec5552800b12ce1d2c46e5bf806aa7790e178e100dc47524
|
|
BLAKE2b-256 checksum How to use checksums |
39afce5fd02d6e95c4450cbb852dc5970435a0a32d78eac5c35b82d1848ead9a
|
| 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.1.0
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.