Kaspersky
Question

Перезагрузка рабочей станции в скрипте

  • 8 April 2021
  • 7 replies
  • 72 views

Userlevel 3
Badge +1

В KSC можно создать задачу Manage devices | restart со всякими плюшками -- настойчиво оповещать пользователя, позволять ему отложить перезагрузку. Судя по https://support.kaspersky.com/10555#block3 используется KLRBTAGT.EXE.

Кто-нибудь знает, как его использовать (задать параметры) “вручную, сам по себе” (на клиентах этот экзешник все равно ж присутствует, от агента)?

Задача -- перезагружать машины, например, после успешной установки чего-либо в скрипте, т.е. самостоятельная задача KSC “перезагрузка” как таковая не подходит.

shutdown.exe, psshutdown.exe с пользователем не общаются так, как умеет касперский агент.


7 replies

Userlevel 7
Badge +5

Добрый день.

На вопрос принимает ли команды EXE’шник не отвечу, тем более его надо запускать в контексте пользователя. 

Зато знаю как делать правильно.

Есть статья https://support.kaspersky.com/KSC/13/ru-RU/92470.htm

в нижней части примеры про задействовование требований на перезагрузку. Затем как я понимаю при создании задачи в GUI консоли будут доступны опции по настройке поведения по перезагрузке. Либо ещё есть в настройках политики Агента администрирования блок про перезагрузку и оттуда возьмутся параметры…
Не практиковал это сам. Будет полезно, если потом всем расскажите как и что получилось.

Userlevel 3
Badge +1

Спасибо!
Т.е. в случае установки некасперских приложений и не-MSI надо править executable_package.kpd “наощупь”… Ну что, будем пробовать.

Userlevel 7
Badge +5

@aehrlich , а в справке, похоже, ошибка, написано “следует изменить вручную kud-файл”, а явно надо изменять kpd-файл раз это не-ЛК и не-MSI приложение.

 

added: оформил запрос INC000012678398 с вопросом про KUD или KPD всё-таки.

Userlevel 5
Badge +2

added: оформил запрос INC000012678398 с вопросом про KUD или KPD всё-таки.

Файлы kud и kpd отличались только кодировкой. В kud использовался unicode. В этом можно убедиться, если сохранились старые дистрибутивы KES типа kes10winsp1_mr4_ru_aes56.exe

Наверное, в статье очепятка, и править нужно тот файл, что формируется при создании инсталл-пакета

Userlevel 3
Badge +1

Вкратце -- не работает. Совсем.

В деталях. KSC 12.2, агент 12.2.0.4376 (12_2), W10 Pro x64 20H2.

Запускается cmd-файл, в задаче установки выбираю интересующий cmd, указываю галку “загрузить все содержимое каталога”. Правлю executable_package.kpd (в основном каталоге и в подкаталоге exec), добавляя такое:

[SetupProcessResult_SuccessCodes]
0=Installation completed successfully
1=The required version already installed

[SetupProcessResult_ErrorCodes]
2=Newer version already installed
3=Laptop model mismatch (product not found)
4=Installation core process returned error
5=Installation encountered an error

[SetupProcessResult_NeedReboot]
0=

Запускаемый cmd может возвращать 0, 1, 2, что угодно, но в KSC результаты отображаются всегда одинаково: Remote installation has completed successfully on this device.

В политике агента настройки
Prompt for user action,
repeat the prompt every 3 min
Force restart after 10 min
Waiting time before forcing close apps 1 min


что отражается на на сервере в инсталляционном пакете в файле klrbtagt.ini как

RebootImmediately=0
AskReboot=1
AskRebootPeriod=5
ForceReboot=0
ForceRebootTime=0
ForceAppsClosed=0

(уже неправильно, на мой взгляд, отражается -- Force, по крайней мере).

Когда задача запускается на целевом компьютере, многое меняется… продолжение -- в следующем посте.

Userlevel 3
Badge +1

Продолжение. На целевом компьютере удается перехватить временно существующее содержимое "C:\Windows\Temp\KAV Remote Installations". Внутри:

В klrbtagt.ini установки отличаются, что, уже чисто на вид, говорит, что никто про перезагрузку спрашивать не собирается (и, видимо, что “0” прописан в [SetupProcessResult_NeedReboot] никого не интересует):

RebootImmediately=0
AskReboot=0
AskRebootPeriod=1
ForceReboot=0
ForceRebootTime=0
ForceAppsClosed=0

В klsc_proc_rslt.dat (который должен бы содержать результат работы исполняемого файла) пишется всегда result=0 независимо от того, что возвращает “исполняемый” cmd (код возврата cmd записывается в локальный файл для отладки; видно, что он “ожидаемый”, а не “всегда 0”).

Похоже, что реально работающий Setup.exe, запускаемый батником e8e-длиннаяжуть-375c.bat как

call "C:\WINDOWS\TEMP\KAV Remote Installations\dd7-длиннаяжуть-efb\setup.exe"  /s /z"/p\"TASK_ID=dd...5e\""
set cmd_proc_rslt=%errorLevel%
echo [cmd_proc_rslt] > "C:\WINDOWS\TEMP\KAV Remote Installations\dd7-длиннаяжуть-efb\klsc_proc_rslt.dat"

тупо не подхватывает или не передает дальше exit code “исполняемого” cmd.

В файле executable_package.kpd указано (upgrade_product.cmd -- основной мой файл установки)

[Setup]
Executable=exec\upgrade_product.cmd
Params=

 

Userlevel 3
Badge +1

Кому интересно, “тестовый инстал-набор” прилагаю (основной исполняемый файл upgrade_product.cmd).

Reply