|
KSC Open API
Kaspersky Security Center API description
|
Creates an image in the PNG format with the chart data.
+--- (params)
+---RPT_CHART_WIDTH = (paramInt) chart width, in pixels. Optional if RPT_CHART_HEIGHT is set.
+---RPT_CHART_HEIGHT = (paramInt) chart height, in pixels. Optional if RPT_CHART_WIDTH is set.
server = KlAkOAPI.AdmServer.KlAkAdmServer.Create("https://ksc.example.com:13299", "username", "password")oReportManager = KlAkOAPI.ReportManager.KlAkReportManager(server) strResultFolderName = "Result" # get the root group ID
nGroupId = KlAkOAPI.HostGroup.KlAkHostGroup(server).GroupIdGroups().RetVal() # compose parameters with information about dashboards that we want to generate
# dashboard type 20: current state of the most anti-virus protection (number of hosts with the Critical, Warning, or OK status).
hostsUUID = str(uuid.uuid4())
parDashboards = KlAkOAPI.Params.KlAkParams({hostsUUID: {'KLRPT_DSH_TYPE': 20, 'id': nGroupId}}) # compose one request for three dashboards
parRequestParams = KlAkOAPI.Params.KlAkParams({'KLPPT_DASHBOARD': parDashboards}) # it takes time to receive statistics, one dashboard can be done earlier than others, so check progress by a timer
while True:
# request statistics for dashboards that are not ready yet by this time
strRequestId = oReportManager.RequestStatisticsData(parRequestParams).OutPar('strRequestId') # wait while the statistics have been received and prepared
time.sleep(5) # get a result
pResultData = oReportManager.GetStatisticsData(strRequestId).OutPar('pResultData') if pResultData == None:
continue if 'KLPPT_DASHBOARD' in pResultData:
# the statistics is ready, now make charts with received data
pDashboards = pResultData['KLPPT_DASHBOARD'] # create a folder for the result
if not os.path.exists(strResultFolderName):
os.makedirs(strResultFolderName) if hostsUUID in pDashboards:
# compose parameters with the statistics data for a chart
hostsDash = pDashboards[hostsUUID]
parChartData = KlAkOAPI.Params.KlAkParams({'data': [hostsDash.GetValue('nOkCount'), hostsDash.GetValue('nWrnCount'), hostsDash.GetValue('nCrtCount')], 'name': hostsUUID})
parChartInfo = KlAkOAPI.Params.KlAkParams({})
parChartInfo.AddArray('KLRPT_CHART_DATA', [parChartData])
parChartInfo.AddString('KLRPT_CHART_DATA_DESC', 'Current state of the most anti-virus protection ')
parChartInfo.AddString('KLRPT_CHART_LGND_DESC', 'number of hosts with:')
parChartInfo.AddArray('KLRPT_CHART_SERIES', ['Ok protection status', 'Warning protection status', 'Critical protection status'])
parChartInfo.AddBool('KLRPT_CHART_PIE', True) # create a chart and download a result file
res = oReportManager.CreateChartPNG(parChartInfo, {'RPT_CHART_WIDTH': 600, 'RPT_CHART_HEIGHT': 600})
strChartFilename = os.path.join(strResultFolderName, 'hosts_dash.png')
with open(strChartFilename, 'wb') as f:
packet = base64.b64decode(res.OutPar('pPngData'))
f.write(packet)
print('Anti-virus protection on hosts chart is ready:', strChartFilename)
break
|