python-rac
Клиент администрирования кластеров 1С через RAS. Говорит с сервером администрирования напрямую по TCP на Python: бинарный rac из платформы не нужен. Одна библиотека и четыре интерфейса.
Дистрибутив на PyPI называется
python-rac, а в коде импортируется какpyrac(имяpyracна PyPI принадлежит другому проекту).
Возможности
- Протокол
16.0(1С 8.5.1) — основной; узкий набор чтений для10.0(1С 8.3.11) и режимauto(только чтение). - Чтение кластеров, серверов, процессов, ИБ, сеансов, соединений, блокировок, профилей безопасности, счётчиков, ограничений, правил и настроек сервисов.
- Защищённые изменения: каждое с повторным чтением и сверкой результата.
- Интерфейсы: библиотека
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)
Быстрый старт
Библиотека
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-*). - Изменения возможны только по протоколу
16.0(autoи10.0— только чтение), на любом RAS этого протокола; веб-консоль без мастер-пароля изменяет только на loopback. - Перед выполнением нужно ввести точную строку подтверждения (например, UUID объекта); успех засчитывается после повторного чтения состояния.
- Пароль администратора RAC идёт по сети открытым текстом (ограничение протокола): подключайтесь через VPN или SSH-туннель. Пароли только записываются: интерфейсы их не возвращают, CLI не принимает их в аргументах.
- Для доступа по сети используйте мастер-пароль и прокси с HTTPS; встроенного TLS нет. Подробности — в docs/security.md.
- Исключение — CLI и библиотека: там нет флагов и подтверждений, команды изменяют RAS сразу. Проверяйте изменения на собственном изолированном стенде, а не на производственном кластере.
- Покрытие команд
racнеполное, многие операции проверены только на изолированном RAS 8.5.1 или тестами; ограничения собраны в docs/limitations.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 0.4.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| python_rac-0.4.7.tar.gz | 596.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| python_rac-0.4.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.0 MB
Release files / python_rac-0.4.7.tar.gz
| Download URL | python_rac-0.4.7.tar.gz |
|---|---|
| Size | 596.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0e326a4a7c8f733605b52f6840a2f4191579cb5e534c81c999e9520dc0c36791
|
|
BLAKE2b-256 checksum How to use checksums |
dcd6cd75efd1199b7bd0f9e136e4826f35988d70353a08e1f88c26301d2b7096
|
| 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-0.4.7-py3-none-any.whl
| Download URL | python_rac-0.4.7-py3-none-any.whl |
|---|---|
| Size | 443.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
19d9596d6112e4c311dec46b90f965ebcbabdf0b7125cb22c8cb02bd8b5918b0
|
|
BLAKE2b-256 checksum How to use checksums |
5b3c57b2716a18ad181ad0d6b38776396d17043ecc0d8c5230610bfda83450a8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.17
|