1с установка двух ключей на один компьютер
Давно известный факт, что нельзя корректно использовать два и более однотипных hasp-ключа ( в частности для 1С) установленные на одном копмьютере. Софт просто отказывается их видеть и использует тот или иной по своему странному усмотрению. Путей решения проблемы несколько:
1. Разнести ключи по разным компьютерам и распределить рабочие станции по ним;
2. Обменять два однотипных ключа на один более емкий;
3. Заменить один или оба ключа (два, три и более в зависимости от ситуации) на программные лицензии;
но вот возникла реальная потребность в решении такой задачи. У пользователя есть 5-ти и 10-ти пользовательские ключи и один компьютер, выступающий в роли сервера для 1С. Заводить второй компьютер для второго ключа мне не захотелось, т.к. это собственно нужно собрать или найти какой-нить второй компьютер и строго настрого научить бухгалтеров его держать всегда включенным, либо выкл/вкл синхронно с сервером, при этом он будет жрать эл/энергию, греть помещение, гудеть и т.д. и ради чего. Поменять в фирме 1С эти два ключа на один можно только с доплатой, т.к. нет 15-ти пользовательского ключа. Опять же 5-ти пользовательский идет как основная поставка, а 10-ти - как доп. лицензии. В общем все это хлопотно, затратно по времени и финансам. Замена на программные лицензии - таже песня. Жизнь таки показала, что если использовать два ключа на одном компьютере нельзя, но очень хочется, то можно. Идем дальше.
Use $ eterkeytest [--hasp] [--sentinel] [--eutron] for test key presence
Все это в моем случае делается из под
sudo mc
Миднайт командер установил ранее и все дальнейшая работа ведется через него.
service haspd restart
и получился бы вполне себе работоспособный вариант, но вся тонкость с виртуальной машиной в том, что просто так туда оказалось очень сложно пробросить нужный ключ из трех близнецов. При попытке добавить hasp-ключ как usb-устройство через gui virtualboxa в выпадающем списке устройств я вижу три близнеца hasp 2.17. Кликая по любому из них, получаю разный по своей плачевности результат, либо ничего не происходит, либо подключается не нужный мне ключ, либо подключается нужный. Все очень случайно. Нужно упорядочить. Для этого в диспетчере устройство, в разделе Контроллеры USB попеременным отключением/включением выясняем какой же из близнецов каким ключем является. Переписываем из св-в Aladdin USB Key с закладки "сведений" значений свойств Путь к экземпляру устройства и ключ драйвера.
Дальнейшая логика работы выглядит следующим образом:
1. отключаем те ключи, которые должны остаться на хостовой ОС (в моем случае это 10-ти пользовательский ключ для 8ки и многопользовательский ключ для 7.7 - они не конфликтуют)
2. включаем виртуальную машину и пробрасываем в нее оставшийся ключ, она его должна "подхватить" после рестарта haspd
3. включаем отключенные ранее ключи.
цель достигнута, но все это работает только после ручных действий, нужно автоматизировать.
Заходим в каталог установки virtualbox на хостовой системе и смотрим список виртуальных машин
нужная ВМ первая в списке, для ее старта необходимо выполнить
vboxmanage startvm "Ubuntu 13.10" --type headless
для проброса ключа нужно выполнить следующее
параметр после usbattach был выписан ранее для нужного нам ключа из Ключ драйвера, также его можно увидеть вот так
vboxmanage list usbhost
Host USB Devices:
UUID: 2b126c69-6c57-40c2-8f6d-e24474a9df77
VendorId: 0x0529 (0529)
ProductId: 0x0001 (0001)
Revision: 2.23 (0223)
Port: 0
USB version/speed: 2/2
Manufacturer: AKS
Product: HASP 2.17
Address: \0 011
Current State: Busy
UUID: 18876e3a-ee93-46e3-a29b-689c3f5f6b56
VendorId: 0x0529 (0529)
ProductId: 0x0001 (0001)
Revision: 2.23 (0223)
Port: 0
USB version/speed: 2/2
Manufacturer: AKS
Product: HASP 2.17
Address: \0 020
Current State: Busy
это адрес второго ключа, но в данном скрине ключ уже захвачен ВМ и потому не соответствует первоначальным данным
\0 011 и \0 020 - два прочих ключа
Осталось как-то через консоль научится отключать usb-устройства, для этого от компании microsoft есть утилита devcon и отключение выглядит вот так
devcon disable "@USB\VID_0529&PID_0001\5&2FA0C562&0&3"
где после disable прописывается Путь к экземпляру устройства
В итоге получаем вот такой bat-файл
@echo %date% %time% Виртуальная машина включается >> autostart-vms.log
rem devcon enable "@USB\VID_0529&PID_0001\5&2FA0C562&0&4" - это пробрасываемый ключ, его не трогаем
devcon disable "@USB\VID_0529&PID_0001\5&2FA0C562&0&3"
devcon disable "@USB\VID_0529&PID_0001\6&182A12DA&0&5"
vboxmanage startvm "Ubuntu 13.10" --type headless
vboxmanage controlvm usbattach \0 015
devcon enable "@USB\VID_0529&PID_0001\5&2FA0C562&0&3"
devcon enable "@USB\VID_0529&PID_0001\6&182A12DA&0&5"
@echo %date% %time% Виртуальная машина включена >> autostart-vms.log
прописываем запуск этого bat-файла в планировщик задач, для события - включение компьютера. Т.е. сразу после включения хоста будет стартовать виртуальная машина и получать нужный ей ключ. Это еще не все - при подключении usb-ключа к убунте, менеджер лицензий сможет его увидеть только если стартует раньше подключения usb. При холодном старте системы так оно и получится. Но нужно предусмотреть ситуацию выключения хостовой машины. Создадим еще один bat-файл
@echo %date% %time% Виртуальная машина выключается >> autostop-vms.log
rem vboxmanage controlvm savestate
@echo %date% %time% Виртуальная машина выключена >> autostop-vms.log
после рестарта Udev
остается создать /home/sergey/haspd-restart.sh
не забываем дать права на исполнение. Т.е. в случае подключения нового устройства с определенными атрибутами произойдет рестарт службы менеджера лицензий. Стоит заменить что выборка этих атрибутов оказалась также весьма не простой. Для начала нашел в /dev/bus/usb/002/024 признак моего ключа
Затем через udevadm выловил присущие ключу атрибуты
Для проверки того, правильно ли составлено правило можно выполнить следующее
udevadm info --query=path --name=/dev/bus/usb/002/024
/devices/pci0000:00/0000:00:06.0/usb2/2-1
получаем путь, добавляем к нему /sys и выполняем
Читайте также: