Sys-Admin Forum

Сброс пароля admin в SEPM 12

Как оказалось в новом пакете отсутствует скрипт по сбросу пароля - resetpass.bat (в предыдущей, 11-ой версии он был и сброс пароля происходил достаточно просто, копирование этого скрипта из старого дистрибутива в новый и его запуск приводят к ошибке - DatabaseUtilities: testDBConnection: Exception - Can’t connect to database, если взглянуть на детали ошибки:

SEVERE: scm.server.version = 12.1.1989.1989
java.sql.SQLException: SEM: Connect to database failed
        at com.sygate.scm.server.db.util.DatabaseUtilities.getDefaultDatabaseCon
nection(DatabaseUtilities.java:341)
        at com.sygate.scm.server.db.util.DatabaseUtilities.getDefaultDatabaseCon
nection(DatabaseUtilities.java:270)
        at com.sygate.scm.server.db.util.DatabaseUtilities.getDefaultDatabaseCon
nection(DatabaseUtilities.java:260)
        at com.sygate.scm.server.db.util.DatabaseUtilities.testDBConnection(Data
baseUtilities.java:2861)
        at com.sygate.scm.server.db.util.DatabaseUtilities.initDataSource(Databa
seUtilities.java:2841)
        at com.sygate.scm.server.db.util.DatabaseUtilities.initDataSource(Databa
seUtilities.java:2614)
        at com.sygate.scm.tools.DatabaseFrame.main(DatabaseFrame.java:1200)
Caused by: java.lang.UnsatisfiedLinkError: no dbjdbc12 in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
        at java.lang.Runtime.loadLibrary0(Runtime.java:845)
        at java.lang.System.loadLibrary(System.java:1084)
        at sybase.jdbc4.sqlanywhere.IDriver.try_load(IDriver.java:451)
        at sybase.jdbc4.sqlanywhere.IDriver.<clinit>(IDriver.java:392)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:186)
        at sybase.jdbc4.sqlanywhere.ASADataSource.getConnection(ASADataSource.ja
va:313)
        at com.sygate.scm.server.db.util.DatabaseUtilities.getDataSourceDBConnec
tion(DatabaseUtilities.java:398)
        at com.sygate.scm.server.db.util.DatabaseUtilities.getDefaultDatabaseCon
nection(DatabaseUtilities.java:285)
        ... 6 more
DatabaseUtilities: testDBConnection: Exception - Can't connect to database.

То особо привлекает внимание строка - Caused by: java.lang.UnsatisfiedLinkError: no dbjdbc12 in java.library.path, из которой видно, что java не может найти драйвер необходимый для подключения к БД - dbjdbc12, элементарный поиск показывает, что файл с аналогичным именем расположен в папке SEPM - Symantec Endpoint Protection Manager\ASA\win32, смотрим тело “старого” скрипта resetpass.bat:

@echo off
setlocal

set CATALINA_HOME=%CD%\..\tomcat
set JRE_HOME=%CD%\..\jre

"%JRE_HOME%\bin\java.exe" -Xms64m -Xmx256m -XX:MinHeapFreeRatio=30 -XX:MaxHeapFreeRatio=40 -classpath "%CD%\..\bin\inst.jar;%CD%\..\bin\inst-res.jar" -Dcatalina.home="%CATALINA_HOME%" -Djava.library.path="%CATALINA_HOME%\bin" com.sygate.scm.tools.DatabaseFrame setpassword admin admin
endlocal

здесь привлекает внимание параметр -Djava.library.path="%CATALINA_HOME%\bin, пробуем в него добавить путь к драйверу - %CATALINA_HOME%…\ASA\win32:

@echo off
setlocal

set CATALINA_HOME=%CD%\..\tomcat
set JRE_HOME=%CD%\..\jre

"%JRE_HOME%\bin\java.exe" -Xms64m -Xmx256m -XX:MinHeapFreeRatio=30 -XX:MaxHeapFreeRatio=40 -classpath "%CD%\..\bin\inst.jar;%CD%\..\bin\inst-res.jar" -Dcatalina.home="%CATALINA_HOME%" -Djava.library.path="%CATALINA_HOME%\bin;%CATALINA_HOME%\..\ASA\win32" com.sygate.scm.tools.DatabaseFrame setpassword admin admin
endlocal

Пробуем, вуаля, сброс пароля снова работает )