Перейти к содержанию

Подключение к агенту на хосте через KSC13 OpenAPI


Рекомендуемые сообщения

Я автоматизирую инфраструктуру и для скрипта мне нужно временно приостановить антивирус на хосте.

 

Я нашел описание (ужасного) API и через два дня пришел к следующему:

 

Использую Session.StartSession -> получаю «sessionID»

С «sessionID» -> Использую HostGroup.FindHosts -> получаю «RequestID»

С «sessionID», «RequestID» -> Использую ChunkAccessor.GetItemsChunk -> получаю «hostnameID»

С «sessionID», «hostnameID» -> Использую CgwHelper.GetNagentLocation -> получаю «locationObj»:

{
  "PxgRetVal": {
    "GwLocHostId": "4f0737f2-9885-46f4-8437-3ba72e50103c",
    "GwLocIndirect": true,
    "GwLocLocation": "http://172.20.23.121:15000",
    "GwLocSignUdp": true,
    "GwLocTargetComponent": "1103;86;1.0.0.0;b736452e-8f9d-42b0-a6bc-251535210f7a",
    "GwLocUseCompression": true
  }
}

 С «locationObj» в качестве массива → пытаемся использовать GatewayConnection.PrepareGatewayConnection:

{
"pLocations":
	[{
 "GwLocHostId": "4f0737f2-9885-46f4-8437-3ba72e50103c",
 "GwLocIndirect": true,
 "GwLocLocation": "http://172.20.23.121:15000",
 "GwLocSignUdp": true,
 "GwLocTargetComponent": "1103;86;1.0.0.0;b736452e-8f9d-42b0-a6bc-251535210f7a",
 "GwLocUseCompression": true
}]
}

 

И я получаю ошибку:

{
  "PxgError": {
    "code": 1192,
    "file": "c:\\a\\b\\a_6vlf7p9h\\s\\csadminkit\\development2\\kloapi\\contentstream\\sax_handler.cpp",
    "line": 314,
    "message": "Field 'type' is not found for the value with name: ",
    "module": "KLSTD",
    "subcode": 0
  }
}

 

При этом ничего полезного в документации по этому поводу нет:

5a832620-ebd4-477d-ad39-8e59b1cbc430.png

https://support.kaspersky.com/help/KSC/13/KSCAPI/a00478_a5983b9b35b07657ef3afdc864c4d6c7e.html#a5983b9b35b07657ef3afdc864c4d6c7e

Что делать?

Ссылка на комментарий
Поделиться на другие сайты

Благодарю, решение пришло методом перебора (охренеть, перебирать чужое api, потому что создатели не удосужились составить нормальные доки). Вердикт - документация, как и реализация api - отвратные.

https://community.kaspersky.com/kaspersky-corporate-products-27/how-to-disable-kes-on-a-host-via-open-ksc-api-18551?postid=83471#post83471

https://community.kaspersky.com/produkty-kaspersky-dlya-biznesa-31/podklyuchenie-k-agentu-na-hoste-cherez-ksc13-openapi-18564?postid=83470#post83470

Ссылка на комментарий
Поделиться на другие сайты

  • 1 year later...

Знаете что здорово? То, что я еще больше убеждаюсь, что API KSC плохой. Как думаете, что могло произойти с уже написанным  playbook во время рефакторинга? Правильно, он снова споткнулся об эту ошибку.

А знаете, почему я думаю, что API плохой, а всех остальных хочется послать более крепким словцом?

Потому что тему с ответом в соседнем форуме удалили! Здорово правда? Форум для решения проблем с этим чудовищем, а пост с решением удален с форума! Отлично!

 

Хоть api и работает, после долгого времени решения, причины, почему я считаю api KCS плохим:

1. Плохая документация - сложно найти требуемые элементы, т.к. они представлены в виде списка одиночных функций. Формально говоря - документация к API предназначена для работы через CLI а не REST. Плохо работает поиск по ключевым словам. Формально - не работает.

1.1 Предложение - перевести документацию для REST API на что-то вроде Swagger. В таком случае будет:

  1. Видна взаимосвязь конечных точек
  2. Возможность их группировки по категориям
  3. Структура и возможность увидеть примеры запроса

2. Название аргументов к запросам и ответам представлены в виде аббревиатур, через одну включающих инициалы названия сервиса. Зачем включать мусорные символы в название аргумента? Например:

REST API: ChunkAccessor.GetItemsChunk
Ответ: {
	"pChunk": {
		"KLCSP_ITERATOR_ARRAY": [
			{
				"type": "params",
				"value": {
					"KLHST_WKS_HOSTNAME": "f652a0af-e219-4716-9064-1da7d59decfd"
				}
			}
		]
	},
	"PxgRetVal": 1
}

Зачем здесь задвоение в названии  KLHST_WKS_HOSTNAME? А за что означают эти символы KLCSP_ITERATOR_ARRAY, KLHST_WKS_HOSTNAME ? Касперский? Спасибо, при общении с таким API эту информацию фиг забудешь.

Что есть WKS? Для чего в ответе ITERATOR_ARRAY? Хочешь массив - делай массив, для чего плодить объекты с длинными бессмысленными названиями?

А божественные ответы в виде ёлочки? Почему нельзя получить ёмкий ответ на заданный запрос, для чего плодить монструозную вложенность объектов - вам платят как Маяковскому - построчно? Пример:

{
	"PxgRetVal": {
		"KLHST_APP_INFO": {
			"type": "params",
			"value": {
				"1103": {
					"type": "params",
					"value": {
						"1.0.0.0": {
							"type": "params",
							"value": {
								"KLHST_APP_STATE": 3,
								"KLHST_APP_STATE_TIME": {
									"type": "datetime",
									"value": "2023-04-03T11:43:11Z"
								}
							}
						}
					}
				},
				"KES": {
					"type": "params",
					"value": {
						"11.0.0.0": {
							"type": "params",
							"value": {
								"KLHST_APP_STATE": 3,
								"KLHST_APP_STATE_TIME": {
									"type": "datetime",
									"value": "2023-04-03T11:43:11Z"
								}
							}
						}
					}
				}
			}
		}
	}
}

2.1. Предложение:

  1. Дать конечным точкам и аргументам ёмкие названия, отражающие их суть. Не можешь уложиться максимум в 2 слова - значит название неудачное.
  2. Выходная глубина Марианской впадины в ответе не имеет никакой пользы, а только добавляет проблемы при разборе экранирующих символов. В самом сервисе может быть любая глубина зависимости между объектами, но на внешнем API должно быть минимум информации, представлена она должна быть максимально емко. Объект - все требуемые свойства на одном уровне. Список - родительский объект -> дочерние объекты, без посредников.

3. Множественные ошибки при возврате сообщений по REST API, вида:

  1. 200 код, при ошибке
  2. отсутствие заголовков, например "application/json" для возвращаемого json
  3. Отсутствие вменяемой причины, почему возникла ошибка, а так же отсутствие синтаксиса и описания, как сделать правильно

Всё вышесказанное относится к первому сообщению поста.

Тут уже не предложение, а обязанность как разработчика REST API сервиса:

  1. Привести в порядок заголовки ответов. Многие службы привязаны к правильным заголовкам ответа и автоматически выполняют регламентные операции при их обнаружении. При их отсутствии - хорошо, если есть возможность в ручной обработке ответа. Плохо, что это может быть не очевидно, поскольку 3.3
  2. Привести в порядок коды возвращаемых ответов и их описание. Для большинства ситуаций существуют стандартные коды, способные отработать большинство ситуаций. Возвращать ошибку сервиса в виде 200 - неправильно.
Ссылка на комментарий
Поделиться на другие сайты

Добрый день. Ваши предложения и замечания по работе продукта, вы можете оставить через запрос в техподдержку через портал https://companyaccount.kaspersky.com/

Ссылка на комментарий
Поделиться на другие сайты

4 часа назад, GrimAnEye2 сказал:

Потому что тему с ответом в соседнем форуме удалили!

про какой соседний форум речь? вы помните название темы?

если про прежнее комьюнити https://community.kaspersky.com/ то оно закрыто, по независящим от компании обстоятельствам.

Ссылка на комментарий
Поделиться на другие сайты

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Похожий контент

    • Pavel Postnikov
      От Pavel Postnikov
      Проблема заключается в том что при нормально установленных и рабочих агенте и клиенте (полностью работоспособных) хост не переносится
      в другую группу.
      Удаляли клиент. С работающим агентом переносили хост в другую группу (переносится) а после установки клиента возвращается в исходную
      при этом невозможно перетащить хост в другую группу.
      Хосты сервера в кластере.
    • website9527633
      От website9527633
      Добрый день! Возник вопрос при обращении агентов удаленно посредством запуска скрипта на рабочих станциях, вопрос: как в Агенте администрирования 15 на рабочих станциях, в скрипте указать пароль от удаления Агента администрирования?
      К примеру у меня скрипт отрабатывал таким образом, но в случае версии Агента администрирования 15, он запрашивает дополнительно пароль от удаления
      @echo off
      start "" "C:\Program Files (x86)\Kaspersky Lab\NetworkAgent\klmover.exe" -address 192.168.1.1 -silent
    • Илья Н.
      От Илья Н.
      Добрый день!
      Имеется сервер KSC 12, с отвалившимися ПК, у которых агент администрирования не выходит на связь с сервером.
      При попытке удаленно (через PsExec) переустановить агент администрирования, с помощью команды:
       
      msiexec /i "\\address\NetAgent_12.0.0.7734\exec\Kaspersky Network Agent.msi" /qn DONT_USE_ANSWER_FILE=1 SERVERADDRESS=address.local EULA=1 SERVERPORT=14000 /l*vx c:\windows\temp\nag_ins.log Появляется ошибка установки - 1624, с сообщением в файле лога:
      MSI (s) (CC:A4) [15:57:20:095]: No System Restore sequence number for this installation. Ошибка применения преобразований. Проверьте правильности путей указанных преобразований. \\address\MST\18dd0322-f64f-4084-952a-18051b4573b1_3_NetAgent_12.0.0.7734.mst Действительно, в данной папке нет MST файла. Вопрос - как его сгенерировать? Насколько я понимаю, он должен быть автоматически сгенерирован, при формировании инсталляционного пакета. 
      Я копировал файлы из папки \NetAgent_12.0.0.7734\exec\, через ORCA генерировал MST файл и копировал на ПК - всё равно появлялась аналогичная ошибка. Как ее исправить?
        
    • androv
      От androv
      Подключаюсь к серверу через Radmin VPN и нет доступа к KES. Помогите как это исправить.
    • ЁлкаПалка
      От ЁлкаПалка
      При запуске игр сначала звук подключения устройства(такой же как например мышку в USB воткнуть),сопровождается это зависанием всего на 2 секунды и только потом запускается сама игра. Все точно тоже самое когда игру закрываю. Пробовал отследить подключаемые устройства с помощью программы USBDeview,не помогло.Никаких поключаемых устройств не обнаружило во время запуска игры.Драйверы на материнскую плату,видеокарты и т.п. обновлены с сайтов разработчика.
      Есть мнение что ноут переключается с интегрированной на дискретную видео карту.Ставил в настройках виндовс галочку чтоб использовало всегда только дискретную,но тогда виндовс и сами игры почему то лагают.
      Помогите решить проблему,очень дискомфортно когда зависания на 2 секунды

×
×
  • Создать...