Тяжёлая жизнь в рамках импортозамещения заставила заниматься настройкой Консультант+ Интранет версия под Astra Linux 1.8. Документацию, как всегда, в открытом доступе не найдёшь - ответы на вопросы буквально собираешь по крупицам. Если вам тема статьи интересна, то рад помочь.
1. Скрипт автоматически определяет старшую версию liconsXXXXXX.
2. Скрипт пишет лог-файл в каталоге расположения скрипта.
3. В скрипте логируется время выполнения операций $strRun (в пределах 24 часов).
Интранет версия К+ может пополняться штатными способами (интернет-пополнение и прием файлов .ANS) без использования каких-либо скриптов. Скрипт используется для автоматизации штатных процессов.
Скрипт содержит внутри подробные комментарии. Поставляется готовым к использованию.
Если принято решение использовать этот скрипт – его надо поместить в каталог /home/consultant/OFFLINE/CONSBASE/
1. Скрипт автоматически определяет старшую версию liconsXXXXXX.
2. Скрипт пишет лог-файл в каталоге расположения скрипта.
3. Ключи для К+ исполняются через функцию run_cons
4. В скрипте ИП пополнение производится через два блока команд #1 и #2, но можно размножить или изменить.
5. В блок #2 приёма пополнения добавлено отключение и подключение «стандартного пула» Онлайн версии.
6. В скрипте логируется время выполнения операций run_cons (в пределах 24 часов).
iconv -f cp1251 -t utf8 /path/to/file_cons.ini

В моём licons-popolrun.sh есть строки
key_string_01="eatmydata $srcPathUPSresFile --ADM --RECEIVE --BASE* --YES $keyProcess"
В моём licons-compress.sh (модифицированная копия licons-popolrun.sh) для сжатия
echo "#1 Запуск licons* COMPRESS - сжать Информационный Банк (файлы *.DT?). Обращаем Ваше внимание, что файлы словарей *.nx? не сжимаются"
key_string_01="eatmydata $srcPathUPSresFile --ADM --COMPRESS --BASE* --YES $keyProcess"
В моём licons-reindex.sh (модифицированная копия licons-popolrun.sh) для переиндексации
echo "#1 Запуск licons* REINDEX - полностью переиндексировать Информационный Банк"
key_string_01="eatmydata $srcPathUPSresFile --ADM --REINDEX --BASE* --YES $keyProcess"
Описание параметров в online.ini для настройки работы Консультант+ Интранет версия под управлением Linux.
;=== Windows ANSI-1251 файл online.ini ===
;=== ВНИМАНИЕ! Символ "точка с запятой" (;) в начале строчки переводит указанный в ней параметр в значение по-умолчанию (default) ===
[Settings]
;Основные
MaxSearchTime = 60 ; (default = 0) максимальное время (в сек.) выполнения поисковых запросов в ИВ. Если default или 0, то запросы выполняются до тех пор, пока не выполнятся.
MaxDictAmount = 500 ; (default = 500) максимальное количество элементов в списке словаря
EnableContextMenu = 1 ; (default = 0) 0/1 выключить/включить отображения контекстного меню в браузере
;---- Блок управления авторизацией ----
UserDataInterface = 1 ; (default = 0) 0/1 выключить/включить функционал Избранное.
UseQueryHistory = 1 ; (default = 0) 0/1 выключить/включить использование Истории поисков
UseTextMarker = 1 ; (default = 0) 0/1 выключить/включить функцию цветного выделения произвольного текста документа
UsersDBPath = ; Назначение каталога для хранения пользовательских данных.
UsersDBPath = "Driver={PostgreSQL ANSI};server=127.0.0.1;port=5432;database=consdb;uid=cons;pwd=PA$$WoRd2PgSQL" ; строка для хранения на PostgreSQL для Linux
DBTimeout = 17 ; (default = 7) максимальное время выполнения запроса к СУБД с данными пользователей, в секундах
IncludeDomainName = 1 ; (default = 1) 0/1 выключить/включить добавление имени домена в логин пользователя.
UseSqliteConnection = 0 ; (default = 1) 0/1 выключить/включить режим хранения пользовательских данных в БД SQLite.
Keytab = /etc/webserver.keytab ; путь к файлу принципала для Kerberos-авторизации
ForceCustomAuth = 1 ; (default = 0) 0/1 выключить/включить режим Cобственной Авторизации (СА).
AllowSelfRegistration = 0 ; (default = 1) 0/1 выключить/включить режим Саморегистрации (режим АРМ Администратора) СА.
AllowAnonymousLogin = 0 ; (default = 1) 0/1 выключить/включить режим Анонимного входа СА.
AdminList = dc\user1, dc\user2 ; (default = выкл.) список пользователей, которым доступен АРМ для контроля доступа пользователей к Онлайн версии СПС КонсультантПлюс.
AdminEmail = consultant@firma.ru ; e-mail администратора
SMTPServer = 192.168.1.11 ; адрес почтового сервера для исходящих сообщений
SMTPUseSSL = 0 ; (default = 0) 0/1 выключить/включить поддержку шифрованных протоколов SSL/TLS для работы с почтовыми серверами
SMTPPort = 25 ; порт для сервера исходящих сообщений (default = 25), для SSL/TLS 465 или 587
SMTPLogin = consultant@firma.ru ; логин для сервера исходящих сообщений
SMTPPwd = cons ; пароль для сервера исходящих собщений
;----------------------
;Расширенные
;StatisticsTargetDir = "C:\CONSBASE\ADM\STS" ; каталог для записи файлов статистики STT
EnableLog = 0 ; (default = 1) 0/1 выключить/включить запись логов сервера в файл log.txt
WriteQueryLog = 0 ; (default = 1) 0/1 выключить/включить запись лога запросов querylog
ShowOnlyAvailDivisions = 1 ; (default = 0) если 1, то на главной странице показываются только доступные разделы
HideStartPageMenu = 0 ; (default = 1) 0/1 выключить/включить показ верхнего тулбара на стартовой странице.
FilterButton = 1 ; (default = 0) 0/1 выключить/включить отображение и использование кнопки "Фильтр" везде, где есть строка фильтра
IsWWWLogo = 0 ; (default = 1) 0/1 выключить/включить внешние ссылки www, consultant.ru, Новости, Горячие документы
EnableRICLink = 0 ; (default = 1) 0/1 выключить/включить ссылки на сайт РИЦ в СО.
EnableRICInfo = 0 ; (default = 1) 0/1 выключить/включить отображение информации о РИЦ
EnableDocLink = 1 ; (default = 0) 0/1 выключить/включить кнопку получения ссылки на фрагмент в тексте документа
URLBase = "http://cons.firma.ru/cgi/online.cgi" ; базовая часть URL-адреса для формирования ссылок в экспортируемых документах (http://nameserver.domen.ru/cons/)
DisableExportTitles = 1 ; (default = 1) 1/0 выключить/включить колонтитулы и титульную страницу при экспорте документов
HideGrayLinks = 0 ; (default = 0) 0/1 выключить/включить отключение "серых" ссылок в тексте документа, а также при экспорте в RTF (и другие форматы)
EnableGrayLinkDocs = 1 ; (default = 0) 0/1 выключить/включить Онлайн-заказ документов по "серым" ссылкам.
EnableNavOnline = 1 ; (default = 0) 0/1 выключить/включить Онлан-поиск документов.
ONDBUrl = "https://ondb.consultant.ru" ; Адрес сервера Новостей. Рекомендуется указать https протокол при работе в сетях с http.
VideoConsultAddress = "https://video.consultant.ru/online" ; Адрес сервера Видеосеминаров. Рекомендуется указать https протокол при работе в сетях с http.
LiveChatAddress = "" ; Адрес сервера «Задать вопрос». Если значение пустое, то вызов сервиса «Задать вопрос» недоступен.
FullVersionInfo = 1 ; (default = 1) 0/1 выключить/включить показ расширенной информации
RefreshCount = 4 ; (default = 0) 0 – таймаут неактивности отключен. Целое число больше 0 - количество запросов таймаута неактивности.
;----------------------
[LDAP]
AuthLDAPBase = "DOMEN.LOCAL" ;Базовый домен для поиска доменной авторизации по протоколу LDAP.
AuthLDAPServer = "ldap://ldap1.domen.local:3268, ldap://ldap2.domen.local" ; адрес(а) серверов LDAP, перечисляются в кавычках, через запятую.
📜 1) Для обновления Консультанта Плюс Интранет версия создал дополнительный скрипт обновления, который собственно вызывает licons-popolrun.sh и дополнительно из журнала обновления, читая его задом наперёд, с помощью утилиты tac (наоборот от cat) извлекает последние строки для системы мониторинга Zabbix. На наличие любых строк в файлах ошибок last_update_ERROR.txt и предупреждений last_update_WARN.txt созданы триггера. Файл last_update_FULL.txt доступен мне так же как элемент (item) в Zabbix и выведен на мой дашборд, чтобы легко и просто наблюдать весь ход обновления и корректность информационных баз (ИБ), особенно в случаях срабатывания триггеров.
#!/bin/bash
# vasilisc 2025
# online update
cd /home/consultant/OFFLINE/CONSBASE
# вызов официального скрипта обновления
sudo -u consultant ./licons-popolrun.sh
LOGFILE="/home/consultant/OFFLINE/CONSBASE/CONS_INET.TXT"
UPDATELOG="/home/consultant/OFFLINE/CONSBASE/CONS_INET_LISTFILES.TXT"
tac "${LOGFILE}" | iconv -f cp1251 -t utf8 | \
sed -n '/--------------------------------------------------------------------------------/q;p' | \
tac > /etc/zabbix/scripts/last_update_FULL.txt
tac "${UPDATELOG}" | iconv -f cp1251 -t utf8 | \
sed -n '/--------------------------------------------------------------------------------/q;p' | \
tac >> /etc/zabbix/scripts/last_update_FULL.txt
cat /etc/zabbix/scripts/last_update_FULL.txt | grep -F "[WARN]" > /etc/zabbix/scripts/last_update_WARN.txt
cat /etc/zabbix/scripts/last_update_FULL.txt | grep -F "[ERROR]" > /etc/zabbix/scripts/last_update_ERROR.txt
exit
📜 2) Для подсчёта количества занятых лицензий (пользователей в онлайн) КонсультантПлюс Интранет версия использую скрипт, возвращающий из лога число. На данный элемент-число (item) так же повешен триггер, для срабатывания в случаях превышения сверх купленного лимита.
При проблеме у пользователя в браузере - "Сейчас подключение невозможно. В онлайн версии работает максимальное количество пользователей". А у меня в дашборде Zabbix сработанный триггер и автоматически отправленное письмо всем причастным.
Чтобы неактивные пользователи не занимали слот лицензии, используйте параметр RefreshCount НЕ РАВНЫЙ 0! Ну или купите больше лицензий - деньги всегда решают.
Логика скрипта проста:
1) если файла нет на границе перехода на новый месяц, то 0.
2) если ( текущая датавремя - датавремя на последней строке ) < 1 часа, то берём 6 поле
иначе 0
#!/bin/bash
# vasilisc 2025
# подсчёт лицензий К+
curmonth=`date +"%Y-%m"`
curdate=`date +"%Y-%m-%d %H:%M:%S"`
f="/home/consultant/ONLINE/cons/SYSTEM/SVRPROTSVRPROT._${curmonth}.TXT"
# нужно взять дату (поле1), время (поле2) и кол-во лицензий (поле6) на последней строке файла
#ДД.ММ.ГГГГ ЧЧ:ММ:СС.МСК Действие ИД сессии Комплект Кол-во сессий Логин Токен Привилегия сессии Статус сессии Статус операции Идентификатор браузера
#01.12.2025 09:13:04.536 SetAuth 0C73FEDC112746269BD45165A5E1060A 0952116717 00000021 user1 Ordinary LoggedIn OK A4557C14-1141-FD02-BB95-1A11C4B26D39
# если файла нет, то это 0 сессий
if [ ! -f ${f} ]; then
echo "0"
exit
fi
lastline=`tail -n 1 ${f} | tr -s ' '`
lastdate=`echo ${lastline} | cut -d' ' -f1`
lastday=$(echo "$lastdate" | cut -d'.' -f1)
lastmonth=$(echo "$lastdate" | cut -d'.' -f2)
lastyear=$(echo "$lastdate" | cut -d'.' -f3)
lasttime=`echo ${lastline} | cut -d' ' -f2 | cut -d'.' -f1`
diffseconds=`echo "$(($(date -d "${curdate}" '+%s') - $(date -d "${lastyear}-${lastmonth}-${lastday} ${lasttime}" '+%s')))"`
# если ( текущая датавремя - датавремя на последней строке ) < 1 часа
if [[ ${diffseconds} -lt 3600 ]]; then
# берём кол-во лицензий из строки
countlic=`echo ${lastline} | cut -d' ' -f6`
echo $((10#$countlic))
else
# нет - активных сессий нет и файл больше не дополняется, прошёл 1 час
echo "0"
fi
exit
📜 3) Простой вызов psql для экспорта всех пользователей в файл CSV.
#!/bin/bash export PGPASSWORD=PA$$WoRd2PgSQL psql -U cons -d consdb -h 127.0.0.1 --no-align --field-separator=";" -P "footer=off" -c "SELECT fio,name,email,last_login_time FROM users;" > users_cons.csv exit
📜 4) Получить информацию о ваших информационных банках (ИБ) sudo find /home/consultant/OFFLINE/CONSBASE/DISTR/DIN/ -type f -exec bash -c 'iconv -f cp1251 -t utf8 "$1"' -- {} \;
Ещё раз напомню, что файл licons - это bash скрипт для запуска бинарника liconsXXXXXX, который в мире Linux аналог cons.exe в MS Windows. Разработчики по непонятной мне причине не дают полный вывод всех доступных опций с подробным описанием, как принято у консольных программ в винде через вызов /? и в линуксах --help. Приходится через отладку выуживать эти опции, а их полное объяснение частично можно найти в Интернет и/или методом проб и ошибок. Тернист путь в разборе что делает та или иная опция с самоговорящим названием на английском языке.
В спойлер запихаю весь список что нашёл, а до спойлера опишу только не опубликованные до сего момента в Интернет.
Итак, опции Консультанта+ что сам проверил и понял суть:
LAW 12.12.25 MLAW 11.12.25 EXP 12.12.25 ...
Licons tool 4024.00.50.751477 Copyright (C) КонсультантПлюс 1992-2025 Рабочая директория (настройки, папки, закладки): /home/consultant/OFFLINE/CONSBASE/ Директория с Информационными банками : /home/consultant/OFFLINE/CONSBASE/BASE/ Директория для временных файлов : /tmp/ Статистика по ИБ: Информационный Банк Всего документов Документов с текстами Последнее пополнение = Российское законодательство (Версия Проф) 516938 516938 13.12.2025 Да Москва Проф 260009 260009 12.12.2025 Да ...
SFLIST.CFG ревизия: 772265 CONSULT.TOR ревизия: 777266 UNI6.CFG ревизия: 769070 ...
Описание опции попробуйте поискать в Интернете, проверяйте на свой страх и риск на тестовой среде! Мониторьте файл /home/consultant/OFFLINE/CONSBASE/CONS_ERR.TXT, если опция не поддерживается, то в журнале это будет отображено.
Весь список опций cons.exe для Windows и licons для Linux версий Консультант Плюс
ACTIVESWITCH
ADMCOPY
ADMNOBUF
ALLMSG
ALPHA
ANSWER
ANSWER#
ANS_STAT
AUTOPROXY
BALANCEDICT
BASE*
BEL_CODE_SP4
BIGDUMP
BINDSTATE_LOG
BIND_DUP
BIND_SLOTS
BIND_STRONG
CARDSVB
CEFLOG
CHANGEREF
CHECKDOCSYNC
CHECKREFS
CLUSTER
CODEABBR5
CODEABBR6
CODEABBR7
CODERELO3
CODE_ADD
CODE_BUPERS
CODE_CARD
CODE_CARD2
CODE_CR
CODE_FLAGS
CODE_GB
CODE_KCONF
CODE_MD
CODE_MD2
CODE_MULT
CODE_NDB
CODE_NOTES
CODE_ORPHO_MODEL
CODE_PROFILE
CODE_QP2
CODE_REL
CODE_REL_FAST
CODE_SA
CODE_SEE_ALSO_CONCEPTS
CODE_SEE_ALSO_SP_VECTORS
CODE_SL2
CODE_SM3
CODE_SP3
CODE_SP4
CODE_STYLE
CODE_SW1
CODE_UF
COMMIT
COMPRESS
COMPRESS_EXT
COMPRESS_LITE
COMPRESS_OLD
CONNECTDICT
CONSOLE
CONTINUE_OP
CONTINUE_TRAN
CONVERT
CONVERT2MIRROR
CONVERT2MONO
CONVERT2PRISM
COPYPROXY
COPY_BASES_KEEP
DEFBROWSER
DELTA
DIAG_DUMP
DIAG_FLUSH
DIAG_OFF
DIAG_ON
DOC_STAT
ENCREFTOITSELF
EXMSGOFF
FAST_SOURCE
FILTERED
FIXFILENAMES
FIXNET
FLUSH
FMT_JSON
FORCE2
FORCEFIRST
FORCENOINTERNET
FORCOMPARE
FREEDICT
FRIEND
FULLMORPH
GETEDITIONS
GET_RGT
GROUP
GROUPLBL
HALFDICTCOMPRESS
HARD_ASSERT_R
HARD_ERROR
HLINK-
HOST
HOST_UF
HTTP_ALT
IE64
INET
INET_DIAG
INET_EXT
INET_EXTLOG
INET_HOST
INET_TEST
INRUBR
IREG
I_ONDEMO
I_ONSPEC
I_SENDLOG
K2K-
KILLDOC
KILLDOCNUM
KLFC
LEGACY_FSIZE
LFD_ON
LINUX
LOCALNODE
LOCALTMP
LOGLEVEL1
LOGOSVB
LOG_CACHE
MAKEQR
MAPDICT
MINI
MINISRDID
MSGSTACK
MSS-
MSSTD
MULTILIST
NEWDIN
NOAPPEAR
NOBALANCEDICT
NOBKUPDATE_WND
NOCASH
NOCOMMIT
NOCOMMON
NOCOMPRESS
NODELTA
NOEMAIL
NOFREEDICT
NOINDEX
NORANGES
NOREINDEX0
NORUNNER
NORUNNER+
NOSLEEPFILES
NOSYSCACHE
NOSYSTEM
NOTITLE
NOTITLE_WAITING
NOVERBASE
NOWORDPANEL
NO_ERR
NO_FILESTAMP_CACHE
NO_HIBERNATE
NO_WRITE_LOCK
OFFLINE
OREG
OUTBUILTIN
OUTENCREF
OUTIRDLIST
OUTRUBR
O_NONBLOCK_FILES
PACKMIRROR
PAR=0
PAR=1
PASSIVECOPY
PRETENDER
PRINT_SRD
PRINT_SRD_LABELS
QUEST+
RAMDICT
RECEIVE#
RECEIVE_CD
RECEIVE_INET
RECEIVE_INET*
RECEIVE_INET-
RECEIVE_OLD
RECEIVE_RES
REG*
REINDEX0
REPORTOLDBASES
REUPDATE
REVERT
RGN9
RGTCOPY
RICPHONE
ROOTLINK
RPC_KEEP_CACHE
SEARCH+
SENDDUMP
SENDSTT
SENDUSR
SENDUSRTORIC
SEPARATE
SERVICEINFO+
SHORTDIRS
SHORTREF
SHOST
SHOW_LOG
SOURCE#
SOURCE#+
SOURCE#BYNUM
SOURCE#EDITIONS
SOURCE+
SOURCECHG
SOURCEGET
STARDICT
STARDICT_OLD
STOPLIST
SYNCREAD
TEM_RV
TESTANS
TESTERR
TESTLEVEL1
TESTQST
TESTRPREFS
THIN_LIST_I
TRANSLIT
USEHOLES
USER
USERNAME
WRPICTURES
WRSOLIDINDEX