Closed axel36rus closed 2 years ago
Количество выданных выдает 1c_license_server.sh used
Однако это не отменяет приведенной ошибки
Тут как то тоже все неоднозначно :) По нулям, но без ошибок.
$ bash -x 1c_license_server.sh used ++ dirname 1c_license_server.sh ++ sed -r 's/\/\//g; s/^(.{1}):/\/\1/'
Тут как то тоже все неоднозначно :) По нулям, но без ошибок.
$ bash -x 1c_license_server.sh used
С какими правами запускается? Необходимы права администратора, ну или системы (т.к. по-умолчанию агент заббикс работает от имени Системы)!
RAS на центральном(ых) сервере(ах) запущен? Администратор кластера есть?
Прошу прощения за глупую ошибку) Запускал без админа и все было по нолям. С админом работает, но результат не утешительный. Единички.
RAS запущен. Сервер лицензирования это отдельная виртуалка на которой установлена утилита RING ну и сама 1С естественно, RAS запущен на ней же, всего 3 сервера, на каждом из них стоит 1С, между собой никак не связаны, но естественно они связаны с сервером лицензирования.
Вот полный отчет команды: $ bash -x 1c_license_server.sh used ++ dirname 1c_license_server.sh ++ sed -r 's/\/\//g; s/^(.{1}):/\/\1/'
Такс.. С лицензиями немного разобрался. Чтобы получить количество сеансов и количество уникальных пользователей, необходимо было запускать все это дело на тех 3-х серверах на которых стоит 1С. Сейчас необходимо получить значения: количество лицензированных сеансов и количество файлов лицензий. Для этого необходимо на сервере лицензирования запустить команду 1c_license_server.sh info, с которой у меня ошибка в первом сообщении. Мне необходимо понять, перед тем как он выдает ошибку что "C:\Program" не является..... Он получил какие-то данные, затем он пытается запустить какую-то программу к которой путь указан с пробелами. Я не могу найти в скриптах, что именно он пытается запустить. Если бы Вы мне помогли, я был бы очень признателен.
необходимо было запускать все это дело на тех 3-х серверах на которых стоит 1С
запускать "это все дело" - это речь про что? Для того чтобы скрипт сервера лицензирования работал корректно RAS должен быть запущен не на сервере лицензирования, а на центральном(ых) сервере(ах) кластера 1С!
По ошибке я понял, посмотрю чуть позже!
Пришлите пожалуйста вывод
$ /C/Program\ Files/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring.cmd license list --send-statistics false
| sed -re 's/^([0-9-]+).*/\1/'
$ bash -x test.sh
$ bash -x test.sh
зачем так? просто команду и вывод ... хм, что за квадратики после цифр?
Запущу я эту команду из консоли или же из файла никакой разницы не имеет. Квадратики такие показывает в консоли.
если выполнить только
/C/Program\ Files/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring.cmd license list --send-statistics false
$ /C/Program\ Files/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring.cmd license list --send-statistics false zzzzzzzzzzzzzzzzzz-zzzzzzzzzzzz(имя файла: "20211023082945.lic") xxxxxxxxxxxxxxxxxx-xxxxxxxxxxxx(имя файла: "20211023083548.lic") ccccccccccccccccc-cccccccccccc(имя файла: "20211023084145.lic") vvvvvvvvvvvvvvvvv-vvvvvvvvvvv(имя файла: "20211023084402.lic") qqqqqqqqqqqqqq-qqqqqqqqqq(имя файла: "20211023084615.lic") eeeeeeeeeeeeeeee-eeeeeeeeeee(имя файла: "20211023084926.lic")
замените sed -re 's/^([0-9-]+).*/\1/'
на cut -d' ' -f1
должно помочь!
Выглядит уже лучше :)
$ /C/Program\ Files/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring.cmd license list --send-statistics false | cut -d' ' -f1 zzzzzzzzzzzzzzzzzz-zzzzzzzzzzzz xxxxxxxxxxxxxxxxxx-xxxxxxxxxxxx ccccccccccccccccc-cccccccccccc vvvvvvvvvvvvvvvvv-vvvvvvvvvvv qqqqqqqqqqqqqq-qqqqqqqqq eeeeeeeeeeeeeeee-eeeeeeeeeee
При замене в 1c_license_server.sh
function license_info {
CURRENT_CODE=$( "${RING_TOOL}" license info --send-statistics false --name ${1} | \ sed -re 's/(.*0{7}10{3}1)5/\10/' | awk -F':' '/0{7}[10]0(0{3}[35]|10{3}|00[125]0|0[135]00)/ { print $2; exit}' )
[[ -n ${CURRENT_CODE} ]] && echo ${CURRENT_CODE:10}
}
на
function license_info {
CURRENT_CODE=$( "${RING_TOOL}" license info --send-statistics false --name ${1} | \ cut -d' ' -f1 | awk -F':' '/0{7}[10]0(0{3}[35]|10{3}|00[125]0|0[135]00)/ { print $2; exit}' )
[[ -n ${CURRENT_CODE} ]] && echo ${CURRENT_CODE:10}
}
Ошибка осталась прежняя
Ошибка осталась прежняя
тогда вывод с bash -x
в студию
$ bash -x 1c_license_server.sh info
Все, разобрался, в 1c_common_module.sh необходимо было поменять:
function get_license_list { "${1}" license list --send-statistics false | sed -re 's/^([0-9-]+).*/\1/' }
на
function get_license_list { "${1}" license list --send-statistics false | cut -d' ' -f1 }
1c_license_server.sh не нужно было трогать. Спасибо!
Однако, непонятно почему sed
не отрабатывает как надо :/
Возможно из-за кириллицы?
да вроде на тестовой среде работало, хотя ...
Пользуясь случаем. Для тех кто на Windows. Файл 1c_ls_license_info.sh должен выглядеть так:
"/c/Program Files/Zabbix Agent/zabbix_sender.exe" -c "/c/Program Files/Zabbix Agent/zabbix_agentd.conf" -k >1c.ls.licenses -o "$(nice -n 19 /c/Program\ Files/Zabbix\ Agent/Scripts/1c_license_server.sh info)" > /dev/null
Добрый день. Хочу отследить кол-во выданных лицензий. Установил все по мануалу. При выполнении команды bash -x 1c_license_server.sh info выдает следующее:
Уже пересмотрел все .sh скрипты, глаза разбегаются, явно где то путь указан без ковычек, но не могу найти.