Jump to content
Update to the Latest Version for Smooth VPN Performance ×

Recommended Posts

AlexUlianovsk
Posted

В прошлых версиях была возможность получить реестр приложений без группировки по количеству. То-есть получал csv файл, который указывал версию ПО и сетевой ip конкретного  АРМ. Сейчас вкладка "без группировки" всё равно группирует (указывается количество АРМ). Как убрать группировку? и получить полный реестр с указанием ПО и ip? 

  • Solution
Goddeimos13
Posted

Штатных средств не припомню, но как вариант можно использовать SQL запрос.

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT
	n.nid,
--	n.strWinHostName,
	n.strDnsName,
--	hst_inventory_products.strID,
--	hst_inventory_products.bIsMsi,
	hst_inventory_products.wstrDisplayName,
	cast(hst_inventory_products.wstrDisplayVersion as char(50)) wstrDisplayVersion,
	--hst_inventory_products.wstrPublisher,
	--hst_inventory_products.uLangId,
	--hst_inventory_products.wstrComments,
	--hst_inventory_products.wstrHelpLink,
	--hst_inventory_products.wstrHelpTelephone,
	--hst_inventory_products.wstrARPRegKey,
	--hst_inventory_hstprds.tmInstallDate,
	invprod_installdir.wstrInstallDir,
--	hst_competitor_products.wstrProductName,
--	invprod_uninstallstring.wstrUninstallString,
	invprod_quietuninstallstring.wstrQuietUninstallString
--	hst_inventory_hstprds.binInstId,
--	hst_inventory_hstprds.imgSid
	
FROM hst_inventory_products
	INNER JOIN hst_inventory_hstprds ON hst_inventory_products.nId = hst_inventory_hstprds.nProduct
	LEFT OUTER JOIN hst_competitor_products ON hst_competitor_products.nId = hst_inventory_hstprds.nCompetitorProduct
	LEFT OUTER JOIN invprod_installdir ON invprod_installdir.nId = hst_inventory_hstprds.nInstallDir
	LEFT OUTER JOIN invprod_uninstallstring ON invprod_uninstallstring.nId = hst_inventory_hstprds.nUninstallString
	LEFT OUTER JOIN invprod_quietuninstallstring ON invprod_quietuninstallstring.nId = hst_inventory_hstprds.nQuietUninstallString
	LEFT JOIN Hosts n on n.nId=hst_inventory_hstprds.nHostId
order by  2
SET TRANSACTION ISOLATION LEVEL READ COMMITTED

На выходе получаем табличку:

image.thumb.png.528a69a3976fb891c935033fe0829b6b.png

  • Like 1
  • Thanks 1
AlexUlianovsk
Posted

Спасибо за ответ! но это сложно (я даже не знаю куда Ваш запрос воткнуть), во вторых хотелось бы стандартными средствами, как раньше)  

QyzgaldaQ
Posted
3 часа назад, AlexUlianovsk сказал:

Спасибо за ответ! но это сложно (я даже не знаю куда Ваш запрос воткнуть), во вторых хотелось бы стандартными средствами, как раньше)  

https://support.kaspersky.ru/ksc/15.1/151343?page=help

  • Thanks 1
AlexUlianovsk
Posted

Спасибо за ответ!  очень помогли.

  • Like 1
  • 6 months later...
Posted
# #!/usr/bin/python -tt
# -*- coding: utf-8 -*-

import keyring
import pandas as pd
import pymssql
import openpyxl
import datetime

df = pd.DataFrame(columns = ['nid', 'strDnsName', 'wstrDisplayName', 'wstrDisplayVersion', 'wstrPublisher'])

# Реквизиты для подключения к серверу SQL
ksc_server = "*****"
user = "*****\\KAV_SQL"
password = keyring.get_password(ksc_server, user)

# Переменная с sql запросом
query = """
SELECT
    n.nid,
    n.strDnsName,
    hst_inventory_products.wstrDisplayName,
    cast(hst_inventory_products.wstrDisplayVersion as char(50)) wstrDisplayVersion,
    hst_inventory_products.wstrPublisher,
    hst_inventory_hstprds.tmInstallDate
        
FROM hst_inventory_products
    INNER JOIN hst_inventory_hstprds ON hst_inventory_products.nId = hst_inventory_hstprds.nProduct
    LEFT OUTER JOIN hst_competitor_products ON hst_competitor_products.nId = hst_inventory_hstprds.nCompetitorProduct
    LEFT OUTER JOIN invprod_uninstallstring ON invprod_uninstallstring.nId = hst_inventory_hstprds.nUninstallString
    LEFT JOIN Hosts n on n.nId=hst_inventory_hstprds.nHostId
order by  2
"""

filename = datetime.datetime.now().strftime("Аудит программного обеспечения_%d-%m-%Y.xlsx")

# Получение данных с SQL
def get_df_sql():
    conn_sql = pymssql.connect(host = ksc_server, user = user, password = password, database = 'KAV')
    global df
    df = pd.read_sql_query(query, conn_sql)
    conn_sql.close()   
    return()

# Обработка данных и сохранение файла
def data_processing():
    df_sorted = df.sort_values(by='strDnsName').reset_index()
    df_sorted.to_excel(filename)
    workbook = openpyxl.load_workbook(filename)
    worksheet = workbook.active

    worksheet.delete_cols(2)
    worksheet.delete_cols(2)

    worksheet.column_dimensions['a'].width = 10
    worksheet.column_dimensions['b'].width = 20
    worksheet.column_dimensions['c'].width = 70
    worksheet.column_dimensions['d'].width = 25
    worksheet.column_dimensions['e'].width = 40
    worksheet.column_dimensions['f'].width = 30
    worksheet.column_dimensions['g'].width = 20
    worksheet.column_dimensions['h'].width = 40
    worksheet.column_dimensions['i'].width = 40
    worksheet.column_dimensions['j'].width = 40
    worksheet.column_dimensions['k'].width = 40
    worksheet.column_dimensions['l'].width = 40

    worksheet['a1'] = '№'
    worksheet['b1'] = 'ПК'
    worksheet['c1'] = 'Наименование программы'
    worksheet['d1'] = 'Версия'
    worksheet['e1'] = 'Издатель\\Разработчик'
    worksheet['f1'] = 'Дата первой установки'
    worksheet['g1'] = 'Отдел'
    worksheet['h1'] = 'Лицензионный статус'
    worksheet['i1'] = 'Отдел использующий'
    worksheet['j1'] = 'Срок действия лицензии'
    worksheet['k1'] = 'Источник приобретения'
    worksheet['l1'] = 'Документы(номер договора)'
    worksheet['m1'] = 'Примечание'

    workbook.save(filename)

def main():
    get_df_sql()
    data_processing()
    
if __name__ == '__main__':
    main()  

Код Python, осуществляет выборку из базы установленного ПО и подготавливает читабельный файл. Может пригодиться кому.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now


×
×
  • Create New...