Работа с конфигуратором по протоколу SSH (не в режиме агента)

Рабочее решение запуска пакетного скрипта конфигуратора 1С через SSH-клиента.

Задача: Автоматизировать процесс пакетного режима работы конфигуратора 1С на сервере Linux (где есть только консоль).

Проблема: Для запуска конфигуратора в Linux необходимо графическое окружение рабочего стола (X-ы).

Решение: Установить Х-сервер в консоли (рабочим решением оказалось установка виртуально сервера Xvfb).

Исходные данные: Клиент-серверный вариант установки 1С. Клиенты любые, сервер — Linux (в моем случае Debian Jessie).

Почему не режим агента?

1. Это решение я нашел ещё до выхода версии 1С, поддерживающей режим агента конфигуратора.

2. На данный момент в режиме агента есть ограниченный набор команд. В моем случае можно использовать все команды пакетного режима конфигуратора.

Теперь по шагам

Наткнулся на обсуждение моей проблемы вот тут http://www.forum.mista.ru/topic.php?id=782091.
Предлагается установить X-сервер и запускать скрипт с помощью xinit. 

# apt-get install xinit

Запуск скрипта с помощью следующей команды (не забывайте, что используются обратные кавычки):

# xinit `which <скрипт>`

Где <скрипт> — это пакет команд запуска 1С-конфигуратора.

Работает. Но есть особенность.

С полноценными X-ами не получилось.

Т.к. запускаю 1С на виртуальном хостинге VDS (xen), то в системе отсутствует по-умолчанию устройство /dev/fb0, которое требуется при запуске xinit.
Его можно добавить, если в dom0 добавить в конфиг виртуальный framebuffer.
Но хостер не пошёл на контакт по этому вопросу.

В итоге нашёл вот такое решение (установка виртуального X-сервера Xvfb).

# apt-get install xvfb

Для запуска 1С в консоли так же потребуется GTK-библиотека, поэтому:

# apt-get install libwebkitgtk-1.0-0:i386

Примечание: работает на jessie. На wheezy есть неразрешимые зависимости.

Важно (долго мучился): при запуске 1С из командной строки в режиме конфигуратора вылетала ошибка Segmentation Fault.
Решение оказалось в установке шрифтов микрософт (не спрашивайте, как до этого дошёл, в интернете нет прямой информации на это):

# apt-get install ttf-mscorefonts-installer

Ещё вариант ошибки и способ решения.
При запуске из консоли процесс запускается, но не заканчивается (висит). В логах ничего нет.
Для того, чтобы разобраться с проблемой пришлось установить графическое окружение (в частности LXDE).
В итоге увидел, что 1С не запускался. Висело окошко с ошибкой "Не удалось инициализировать компоненту frame".

Считаем "frame" библиотекой frame.so из комплекта 1С.
Проверяем какие библиотеки подгружаются при запуски frame.so:

# ldd /opt/1C/v8.3/i386/frame.so | grep not

Среди вывалившегося списка библиотек основные входят в комплект 1С.
Каждый файл можно найти и посмотреть где он лежит с использованием команды:

# locate <имя библиотеки>

В моем случае не была найдена библиотека libGL.so.1.
Выяснилось, что ранее были установлены драйвера ATI Radeon, которые не были удалены.
Удалил их и все встало на свои места.

# apt-get purge fglrx.*

После этого можно использовать команду вида:

# xvfb-run <скрипт>

Как я это использую

Скрипт настроен на Подключение к хранилищу — Обновление конфигурации из хранилища — Обновление конфигурации базы данных.

1 Comment

  1. t.v.s.

    Спасибо, возьму на заметку!

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *