Консоль администрирования серверов 1С (ras) для Linux и Windows
Программа для администрирования серверов 1С (ras) для Linux (в первую очередь) и Windows.
Программа писалась «для себя», исключительно под собственные нужды, для решения задач, возникающих именно у меня, поэтому функционал вот такой. При этом основным мотивом к её созданию было то, что для платформы Linux не существует достаточно удобного аналога «Консоли администрирования«, какой есть в Windows. Альтернативы, конечно, имеются, но они в силу разных причин не удовлетворяют моих потребностей.
На каком языке написана программа?
— на python с использованием фреймворка Qt (библиотека PyQt5)
Так он же , и вообще, лучше бы писал на
— мне плевать — написал на том, на чём смог. Мои потребности удовлетворяет, и этого уже достаточно.
Почему именно python?
— выбор пал на «питон» по причине того, что перед началом работы он, в связке с Qt, показался мне наиболее удобным для освоения. Как и графическая библиотека Qt, он кроссплатформенный, что было немаловажно перед стартом. У него хорошая реализация и поддержка в Linux, есть куча IDE (использую Pycharm), а по структуре языка, по синтаксису мне он показался гораздо ближе, чем тот же С++ какой-нибудь. Я за три месяца сумел изучить python и PyQt5 только по руководствам и примерам в интернете до степени «могу писать не слишком сложные программы с графическим интерфейсом» — значит, выбор был правильный.
Чёт как-то работает.
— всё реализовано так, как я посчитал нужным. Повторяюсь — писал для себя. «Я автор, я так вижу.» Я провициальный, далеко не суперский программист 1С, а «питонщик» из меня вообще нулевой. Тем не менее, программа работает и выполняет те функции, ради которых она была разработана.
Посмотрел я исходники. Какой ужас! Быдлокод! Кто так делает? Нужно было по-другому!
— так возьмите и сделайте. Свой парк развлечений с блэкджеком Свою консоль администрирования с «питоном» и «линуксом». Код открыт. Не хотите сами — внесите предложение в конструктивной форме или присылайте коммиты.
В целом, программа рассчитана на хоть сколько-то продвинутых пользователей, понимающих, что они делают и зачем. Понимающих, что такое «ras» и «rac» и как это всё работает (хотя я сам ещё не до конца всё понимаю). При этом я попытался сделать программу максимально удобной и для относительных новичков.
На каких ОС работает программа?
— Linux и Windows
Что из себя представляет программа?
— по большому счёту, это графический интерфейс к утилитам «ras» и «rac» с некоторыми дополнительными возможностями
В двух словах — что может программа?
— в программе реализованы самые базовые, но в то же время самые востребованные функции: создание, редактирование и удаление SQL-баз, принудительное завершение сеансов пользователей и вывод определённой информации
Где тестировалась программа?
1) дома: Kubuntu 21.10 x64, PostgreSQL; сервер 1С и SQL на одном компьютере;
2) дома в «виртуалке» Virtualbox: Windows 10 x64, MS SQL Sqerver 2008; сервер 1С и SQL на одном компьютере;
3) рабочий компьютер: Windows 10 x64, MS SQL Sqerver 2012; два сервера 1С установлены на двух серверах в локальной сети, два SQL-сервера в отдельной подсети «за» теми двумя
4) рабочий компьютер: Windows 10 x64, MS SQL Sqerver 2012; сервер 1С и SQL-сервер установлены на одном сервере в локальной сети
В данных конфигурациях критических ошибок либо нет, либо я на них не наткнулся.
Могут ли быть ещё ошибки в программе?
— Конечно. Я не в силах самостоятельно, «в одно лицо» предусмотреть и выявить все «косяки». Повторюсь: программа рассчитана на относительно опытных пользователей, которые, условно, не будут сознательно делить на ноль в каком-нибудь вообще неважном пункте меню. Плюс я не в состоянии протестировать все возможные комбинации операционных систем, SQL-серверов и серверов 1С и предусмотреть все возможные действия, которые могут совершить пользователи. До чего дошли руки, то и тестировал.
Не все функции программы (точнее, команды rac) мне удалось протестировать в работе просто по причине того, что я сам мало понимаю, для чего они нужны и как должны себя вести. Там полно всяких дополнительных параметров, которые мне за всё время администрирования баз ещё ни разу не пригодились (даже на Windows), это что-то очень специфичное. Возможно, протестирую в будущем, но это не точно.
Где хранятся настройки?
— [db_settings.xml — настройки списка баз, common_settings.xml — настройки самой программы]:
— Linux: /.config/AdminConsole/
— Windows: %AppData%/Roaming/AdminConsole/
Как хранятся пароли?
— на данный момент пароли хранятся в открытом виде в файле настроек (администратор ИБ, администратора кластера (в Linux)). Теоретически, при необходимости можно и зашифровать файл настроек, и вроде даже в python для этого есть механизм, но пока что я не вижу такой необходимости.
Почему программа так много весит?
— понятия не имею. Это всё python))) ну, и PyQt5. Я постарался — в силу скромных познаний в python — убрать из проекта всё лишнее, не тянуть лишних библиотек, но всё равно получилось много, и это при том, что весь код вместе с иконками весит пару-тройку мегабайт. Если кто знает, как облегчить сборку — буду признателен за совет.
Будет ли программа обновляться?
— будет, как минимум на период выявления критичных ошибок. Возможно, если будет интерес у пользователей на добавление нового функционала, то тоже займусь, если пойму, что это мне по силам. Всё же, уровень моего владения python я расцениваю как «зачаточный»
Что есть в дальнейших планах?
— думаю, было бы разумно реализовать настройку параметров кластера, но так как мне самому эта функция на данный момент не нужна, то всё зависит от востребованности у пользователей
Практически все действия в программе выполняются из контекстного меню по нажатию правой кнопки мыши.
При первом запуске программа создаёт два файла настроек. Дальше программа проверяет, запущен ли на локальном компьютере сервер ras. Далее желательно заполнить настройки программы, где выбрать сервер, где запущен ras — это может быть или локальная машина, или один или несколько серверов в сети.
По умолчанию сервер ras требует отдельного запуска, и для этого нужно нажать кнопку «Запустить ras». Вы попадёте в форму запуска ras, где можно выбрать варианты:
— запустить ras как службу на локальной машине (эту команду можно скопировать и использовать для создания служб ras на серверах в локальной сети)
— запустить ras разово на локальной машине (через командную строку)
После этого можно заполнить список баз, зарегистрированных в кластере 1С. Это можно сделать либо вручную, либо автоматически, нажав кнопку «Обновить». Если настройки были заполнены корректно, то после окончания процедуры обновления в левой части программы появится список серверов с базами.
Для пользователей Linux можно заполнить учётные данные администратора кластера для их дальнейшего автоматического использования (либо при вызове определённых команд потребуется вводить логин и пароль вручную)
Дальше нужно заполнить учётные данные администратора информационной базы 1С (если доступ к ИБ того требует). Возможно, стоит реализовать ввод логина/пароля в отдельном окне при обращении к базе, если этих данных нет в программе, но это пока не реализовано. (Ладно, пока придумывал весь этот текст, по ходу реализовал)
Ну, а дальше всё должно быть интуитивно понятно — если Вы запустили эту программу, то уж наверняка предполагаете, как она работает.
Вывод ошибок большинства команд, когда надо получить «выхлоп» (например, информация о сеансах), реализован через перенаправление стандартного потока вывода ошибок в текстовый файл во временной папке (. \Temp или . /tmp). Создаются две команды — одна для поиска ошибок (запускается через os.system(_bashCommand)), другая для непосредственного выполнения команды, если в первой команде ошибок не было обнаружено (запускается через subprocess.check_output(bashCommand, shell=True)). То есть по факту большинство команд выполняется дважды подряд. С виду такой метод кажется корявым, но как это реализовать более технично-эстетично в python, я не знаю, поэтому выкрутился вот таким вот способом.
Командам на исполнение «выхлоп» не нужен, поэтому в subprocess.check_output() смысла нет.
1С Управление серверами в linux (пример Ubuntu)
Компания 1С разработала аналог консоли Администрирования серверов 1С Предприятия, который может быть использован в режиме предприятия для администрирования кластера 1С под управлением Linux. Это существенно облегчает работу с кластером 1С на сервере linux. (Если вы имели дело с rac в консоли вы поймете о чем речь). Более того? данная обработка в одном моменте? даже превышает возможности стандартной консоли для Windows (об этом написано на странице ИТС).
Скачать обработку и почитать кратко требования и возможности можно на сайте ИТС тут
В данной статье хочу лишь поделиться своим опытом запуска обработки и небольшим недопонимаем и возможно багом, с которыми я столкнулся. Запуск осуществлялся на сервер под управлением ОС Ubuntu 18.04
Итак вы можете скачать данную обработку как отдельный файл по ссылке указанной выше или же, если у вас новая конфигурация, с платформой выше нужной версии, то скорее всего вы найдете обработку уже внутри вашей конфигурации в разделе “Функции для технического специалиста” (не забудьте включить видимость этого раздела в настройках)
Запуск утилиты ras
Напомню что данная обработка работает в паре со стандартной утилитой от 1С ras и если у вас не настроен ее автозапуск на сервере, то ее необходимо запустить. Располагается она по пути установки 1С сервера в Ubuntu это каталог /opt.
Например путь к утилите может быть такой: /opt/1cv8/x86_64/8.3.18.1334/ras
А запуск соответственно выглядеть так: sudo /opt/1cv8/x86_64/8.3.18.1334/ras cluster localhost:1540 – в таком варианте будет запущена на стандартном порту 1545 в текущем сеансе консоли.
Или например если вы хотите запустить ее как демон: /opt/1cv8/x86_64/8.3.18.1334/ras cluster –daemon –port=1545 localhost:1540 – тут использован также параметр спецификации конкретного порта, если вам необходимо сменить стандартный порт на другой
Проблемы и решения при работе с обработкой
Первое с чем пришлось столкнуться – это добавление нового подключения:
И вот тут первая путаница – я ошибочно полагал что обработка требует от меня пароль к кластеру, но это не так. Он требует внимание смотрим на скрин данные “Администратора центрального сервер“. При установке сервера, я такое не задавал.
Соответственно поля логин и пароль нужно было оставить пустыми.
Тут стоит отметить, что пришлось даже воспользоваться отладкой, чтобы понять что обработка корректно передает учетные данные, так как постоянно возникала ошибка некорректных учетных данных. Но тут скорее моя невнимательность и недопонимание.
Дальше удалось подключиться развернуть ветку кластера ввести пароль к нему и увидеть всё великолепие (все функции Windows консоли).
Но, с чем столкнулся. И думаю, что это баг обработки с сайта ИТС. Если пользоваться обработкой скачанной с ИТС, при попытке изменить информационную базу (скрин ниже), после ввода учетных данных администратора базы (пользователя 1С) ничего не происходит. Отладчиком тоже удалось выяснить, что в определенном месте алгоритма просто не происходит нужного открытия свойств.
Но, если пользоваться обработкой из раздела “Стандартные” – “Функций для технического специалиста”, то она лишена такой проблемы. И открывается окно свойств базы. Видимо внесены исправления.
P.S. Не докопался до информации о происхождении этой обработки. Но сделал вывод, что скорее всего она входит в состав БСП, так как на примере новой базы, созданной на основе БСП 3.1.5.180, могу сказать, что эта обработка там присутствует.