Качественные ИТ-услуги по приемлемым ценам Поиск по сайту

Использование нескольких однотипных USB HASP-ключей 1C на одном терминал-сервере

 

Исходные данные 

      Три обособленных фирмы, расположенных в различных городах, объединились в единый холдинг с централизованной бухгалтерией. В каждой из фирм ранее были приобретены программные продукты фирмы 1С с аппаратными HASP-ключами, серверные операционные системы Microsoft Windows 2008 R2 и системные блоки ПК, для использования в качестве выделенных серверов терминалов. После реорганизации было принято решение о создании единого центрального сервера  с доступом к данным из офисов обособленных подразделений по RDP протоколу. Естественное желание руководства минимизировать материальные затраты, привело к постановке следующей задачи: скомпоновать из имеющихся системных блоков наиболее производительную серверную платформу и поднять на ней RDP сервер с использованием раннее приобретенного ПО и лицензий.

 Результаты предварительного тестирования

      В качестве серверной платформы использовался системный блок на базе процессора Intel(R) Core(TM) i7-6700 3,4 GHz, с оперативной памятью DDR4 4x8 Gb и жеским диском SSD 240 Gb. Программное обеспечение: Microsoft Windows 2008 R2 Std; 1С:Бухгалтерия 8.3 ПРОФ + 1С:Зарплата и Управление Персоналом 8.3, с 3-мя аппаратными HASP-ключами на 5 пользователей; HASP License Manager Version 8.32.5.40 (May 2008), Sentinel LDK and Sentinal HASP Version 7.63 (December 2017) (ссылки на все общедоступное ПО в конце статьи ) .

      Официальная поддержка 1С говорит о невозможности использования двух и более однотипных USB HASР-ключей на одном физическом ПК, в связи с  особенностью их конструкции. Это полностью было подтверждено в процессе тестирования. Аналогичные результаты были получены при попытке использовать разные ключи под управлением различных гостевых ОС в системе виртуализации Oracle VirtualBox 5.2.4(для Windows). Проблема заключается в том, что ОС Windows присваивает одинаковые уникальные идентификаторы всем трем ключам и менеджер ключей может использовать только один из них.   

Найденное решение

      В отличии от Windows, Unix-подобные системы иначе идентифицируют USB-устройства. После некоторых раздумий, было решено провести тестирование ОС Linux Debian 9.5.0-amd64 в связке с Oracle VirtualBox 5.2.4 (для Linux).  Процесс установки Debian и VirtualBox  опускаю, в сети информации об этом огромное количество, ограничусь несколькими важными замечаниями. После запуска Debian НЕ УСТАНАВЛИВЙТЕ ПАКЕТЫ ДЛЯ USB-HASP !  В противном случае хостовая ОС займет их под себя и проброс в гостевую ОС не получится. Подключив три HASP-ключа, смотрим свойства USB устройств с помощью  утилиты Vboxmanage. В терминале выполняем:  vboxmanage list usbhost 

Видим три устройства у которых нас особенно интересует значение UUID. Легко заметить, что каждое из устройств имеет свой уникальный UUID. Это означает что есть возможность избирательного подключения устройств к различным виртуальным машинам. Еще одно важное замечание: в настройках USB виртуальных машин необходимо включить контроллер USB, но НЕ ПОДКЛЮЧАТЬ ни один из HASP-ключей!  Если хотя бы один ключ будет указан в настройках USB, при запуске виртуальной машины к ней будут подключены все имеющие HASP. 

 

     В среде VirtualBox 5.2.4 (для Linux) Было установлено 3 гостевых ОС:  Microsoft Windows 2008 R2 Std и две Microsoft Windows 2003. В целях экономии дискового пространства и времени, вторая ВМ windows 2003 была клонирована из первой, в этом случае можно использовать один виртуальны диск для обеих машин и нет необходимости в установке ПО и настройке клонированной ВМ. 

     На первой ВМ с Windows 2008 R2 был настроен сервер терминалов и организован доступ к данным 1С 8.3, установлен Монитор HASP лицензий. На всех трех ВМ установлены драйверы HASP и Серверы HASP лицензий (ссылки на все общедоступное ПО в конце статьи ). Таким образом, после старта ВМ мы имеем возможность подключить к ней один из HASP-ключей, причем каждой машине можно назначить  свой ключ.

      Для того, чтобы 1С 8.3 могла работать со всеми тремя ключами, необходимо сделать изменения в файле "nethasp.ini"  , находящемся в подпапке "conf" папки установки платформы.  В параметре "NH_SERVER_ADDR"  необходимо, через запятую, перечислить IP адреса виртуальных машин с ключами: "NH_SERVER_ADDR = <IP первой ВМ>, <IP второй ВМ>, <IP третьей ВМ>". Аналогичные изменения необходимо внести в файл "nethasp.ini"  Монитора HASP лицензий.  Монитор лицензий начнет отображать информацию по ключам только после того как с соответствующего сервера лицензий будет получена хотя бы одна лицензия! 

"Вишенка на торт"

      Скорее всего Вам уже пришла в голову мысль о том, что каждый раз, после перезагрузки хостовой ОС, "в-ручную" подключать HASP-ключи к ВМ совсем "не круто". Я тоже так считаю и предлагаю следующую автоматизацию запуска: 

В файл /etc/rc.local ОС Debian, перед exit 0  добавляем строки
VBoxManage startvm <Имя 1-й ВМ> --type headless" <Имя пользователя>
VBoxManage startvm <Имя 2-й ВМ> --type headless" <Имя пользователя>
VBoxManage startvm <Имя 3-й ВМ> --type headless" <Имя пользователя>
- это автоматический запуск ВМ, в фоновом режиме, при перезагрузке Debian,
sudo su -c "/<место расположения скрипта>/PowerUSBKeys.sh" <Имя пользователя>

- это запуск скрипта, подключающего HASP-ключи, после старта ВМ. <Имя пользователя> - пользователь,
под которым создавались ВМ, должен входить в группы vboxusers и sudo .

 

Скрипт PowerUSBKeys.sh анализирует результат  vboxmanage list usbhost , создает и выполняет дополнительный скрипт, подключающий HASP-ключи к виртуальным машинам. Вот его содержимое:

#!/bin/bash
vboxmanage list usbhost>/<место расположения скрипта>/usblist
i=0
cat /<место расположения скрипта>/usblist | while read line; do
 if [ "${line:0:5}" = "UUID:" ]; then
      ((i ++))
      if [ $i = 1 ]; then
       echo "vboxmanage controlvm  <Имя 1-й ВМ> usbattach {${line:20}}">/<место расположения скрипта>/startKey.sh
      fi
      if [ $i = 2 ]; then
       echo "vboxmanage controlvm   <Имя 2-й ВМ> usbattach {${line:20}}">>/<место расположения скрипта>/startKey.sh
      fi
      if [ $i = 3 ]; then
       echo "vboxmanage controlvm   <Имя 3-й ВМ> usbattach {${line:20}}">>/<место расположения скрипта>/startKey.sh
      fi
 fi
done
chmod ugo+x /<место расположения скрипта>/startKey.sh
/bin/bash /<место расположения скрипта>/startKey.sh
rm /<место расположения скрипта>/startKey.sh
rm /<место расположения скрипта>/usblist

* <место расположения скрипта> - везде заменить на путь к папке со скриптом (без символов "<>") !
* <Имя ...-й ВМ> - везде заменить на наименование соответствующей ВМ, как оно заданго в VirtualBox-е (без символов "<>") !

 

Ссылки для скачивания:

HASP License Manager Version 8.32.5.40 (May 2008)
Sentinel LDK and Sentinal HASP Version 7.63 (December 2017)
Aladdin Monitor Version 1.4.2 (July 2008)
Скрипт PowerUSBKeys.sh
Прочитано 1617 раз Последнее изменение Понедельник, 22 Октябрь 2018 21:28
Авторизуйтесь, чтобы получить возможность оставлять комментарии