Seite 1 von 1

[GELÖST] swaudit zusätzlicher registry key auslesen und im Configed anzeigen

Verfasst: 01 Apr 2015, 14:58
von Lukas
Hallo liebe OPSI gemeinde,
ich bin neu hier und bin gerade dabei mich mit OPSI anzufreunden. Ich habe zur Zeit einen config und einen depot server am laufen. Alles noch Testumgebungen. Was mich interessiert, ist es möglich das swaudit umzuschreiben damit dieser einen zusätzlichen registry-Key ausliest und ebenfalls im Configed unter Software-Inventur anzeigt?
Mir geht es um die Teamviewer ID, diese steht unter "HKLC/SOFTWARE/Wow6432Node/TeamViewer/ClientID".

Kann mir hier einer Tips oder Links geben wo ich das genauer nachlesen kann. Ich habe mir schon das Handbuch angesehen und die Rubrik opsi-winst ist hierbei auch hilfreich. Leider finde ich dort nichts wie ich die ausgelesenen informationen dann ich den Configed bekomme. Bin ich einfach nur Bertiebsblind oder suche ich nach den falschen Begriffen?

Danke euch im voraus für eure Hilfe.

Re: swaudit zusätzlicher registry key auslesen und im Configed anzeigen

Verfasst: 02 Apr 2015, 11:12
von n.wenselowski
Hallo,

das swaudit konzentriert sich momentan auf die maschinenweit installierten Produkte (HKLM).
HKLC sagt mir jetzt gar nichts. Ist das ein Benutzerspezifisher Teil?

Grundsätzlich könnte man swaudit anpassen, dass es auch in anderen Pfaden sucht.
Problematisch wird es bei den Teilen, die Benutzerspezifisch gesetzt sind - hier läuft opsi ja erstmal nicht im Kontext des jeweiligen Benutzers.

Für den Anfang würde ich vorschlagen das swaudit-Produkt auszupacken und dir das verwendete winst-script anzuschauen - da ist dann schon das Auslesen vorhanden und du siehst, wie die Daten zum Server übertragen werden.
Für die Sachen, die im Script dann unbekannt sind, empfehle ich das Handbuch.

Gruß

Niko

Re: swaudit zusätzlicher registry key auslesen und im Configed anzeigen

Verfasst: 02 Apr 2015, 11:16
von SisterOfMercy
n.wenselowski hat geschrieben:HKLC sagt mir jetzt gar nichts. Ist das ein Benutzerspezifisher Teil?
He probably means HKCU.
HKLC could stand for H_KEY_LOCAL_CUNTS, sort of all users in BOFH-language ;-)

Re: swaudit zusätzlicher registry key auslesen und im Configed anzeigen

Verfasst: 16 Nov 2015, 13:44
von Lukas
Hallo liebe OPSI gemeinde,
leider musste das Projekt OPSI lange ruhe.
Nun möchte ich aber entlich das System für den Produktiven einsatz vorbereiten.

Bis jetzt geht:
Ich habe es geschaft die swaudit4.ins so anzupassen das ein zusätzlicher Pfad auf der Reg ausgelesen wird. Dieser wird auch richtig in die Variable geschrieben, was ich mittels comment auch in der log von configed sehen kann. Ich habe auch die neue Variable der "softwareHashlist" beigefüht. Zur kontrolle habe ich die Variable von "version" gegen meine eingene getausche und sehen den korrekt ausgelesenen Reg-Wert im configed. Das schreiben der swaudit log aber ich ebenfalls zum testen aktiviert und die Variable wird dort auch korrekt der Hashliste angezeigt.

Nun zu meinen Fragen:
Ich habe mir die tabele "SOFTWARE" der mysql Datenbank "opsi" mittels select ausgeben lassen, hier finde ich aber keine neue Spalte mit meinen angaben. Wo und/oder wie lege ich dort eine eigene an? Hab ich etwas im winst Script übersehen? Wird die Spalte dann ohne änderungen im Configed angezeigt oder muss dort noch etwas geändert werden?

Re: swaudit zusätzlicher registry key auslesen und im Configed anzeigen

Verfasst: 18 Nov 2015, 11:11
von n.wenselowski
Hallo Lukas,
Lukas hat geschrieben:Nun zu meinen Fragen:
Ich habe mir die tabele "SOFTWARE" der mysql Datenbank "opsi" mittels select ausgeben lassen, hier finde ich aber keine neue Spalte mit meinen angaben. Wo und/oder wie lege ich dort eine eigene an? Hab ich etwas im winst Script übersehen? Wird die Spalte dann ohne änderungen im Configed angezeigt oder muss dort noch etwas geändert werden?
Bitte mach dir (und uns) den Gefallen und verwenden die Schnittstellen zum Auslesen der Daten.

Passende Methode dazu ist auditSoftwareOnClient_getHashes.

Hier Ausgabe aller Daten (das Filtern überlasse ich dem geneigten Leser als Übung ;)) auf der Kommandozeile

Code: Alles auswählen

$ opsi-admin -d method auditSoftwareOnClient_getObjects
Wenn du einfach einen neuen Software-Eintrag in die Liste der gefundenen Software ergänzt, musst du nichts machen - sofern die Einträge so aufgebaut sind wie die bereits vorhandenen.


Gruß

Niko

Re: swaudit zusätzlicher registry key auslesen und im Configed anzeigen

Verfasst: 18 Nov 2015, 14:46
von Lukas
Hallo Niko,
Bitte mach dir (und uns) den Gefallen und verwenden die Schnittstellen zum Auslesen der Daten.
Das werde ich so auch nicht einsetzten, es war ein schneller test ob hier überhaupt etwas passiert. ;)

Ich habe mal die swaudit4.ins mit angehängt.
Hier habe ich zwei weitere Variablen deklariert, eine Variable mit den zusätzlichen Pfad in der Reg befüllt, die beiden Subs "sub_getswdetails4_32" und "sub_getswdetails4_64" angepasst, die zweite Variable mit in die comment aufgenommen und in die beiden Hashlists "softwareHashlist" und "softwareOnClientHashlist" meinen neuen Wert mit aufgenommen.
Im Log des Configed sehe ich die comment mit korrektem inhalt der Variable, nach umstellen des Loglevels wird der Hash ebenfalls im Log angezeigt, dort taucht ebenfalls alles korrekt auf. Ich sehe diese werte nur nicht unter "Software-Inventarisierung" im configed, warum?

Code: Alles auswählen

 ; Copyright (c) uib GmbH (www.uib.de)
; This sourcecode is owned by uib
; and published under the Terms of the General Public License.


[actions]
requiredWinstVersion >= "4.11.3.11"
ScriptErrorMessages = off
DefVar $Highloglevel$
DefVar $Midloglevel$
DefVar $Lowloglevel$
DefVar $ProductId$
DefVar $OpsiRegKey$
DefVar $uninstkey$
DefVar $extendedkey$
defVar $winSoftwareId$
defVar $displayVersion$
defVar $displayName$
defVar $uninstallString$
defVar $Language$
defVar $user$
defVar $pass$
defVar $serviceUrl$
DefVar $swAuditInfoStr$
DefVar $clientId$
DefVar $ident$
DefVar $name$
DefVar $version$
DefVar $subversion$
DefVar $architecture$
;DefVar $opsiVer$
DefVar $SysArchitecture$
DefVar $binaryName$
DefVar $Teamviewer$
DefVar $TVID$
DefVar $lastUsed$
DefVar $installSize$
DefVar $usageFrequency$
DefVar $langCodeHex$
DefVar $licenseKey$
DefVar $tmp$
DefVar $aktkey$
DefVar $extended_search$
DefVar $write2file$
DefVar $readfromfile$
DefVar $usefilebuffer$
DefVar $usekeyfinder$
DefVar $line$
DefVar $element$
DefVar $aktKeyVar$


DefStringlist $uninstKeys$
DefStringlist $resultlist$
DefStringList $singleHash$
DefStringList $softwareHashlist$
DefStringList $softwareOnClientHashlist$
DefStringList $SlowInfoMap$
DefStringList $VerInfoMap$
DefStringList $LicenseSections$

set $ProductId$ = "swaudit"
Set $OpsiRegKey$ = "HKLM\SOFTWARE\opsi.org"
Set $uninstkey$="HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\uninstall"
Set $Teamviewer$="HKEY_LOCAL_MACHINE\software\wow6432node"
Set $extendedkey$="HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\app management\arpcache"
set $clientId$="%HostID%"
set $extended_search$ = GetProductProperty("extended_search","off")
set $usefilebuffer$ = GetProductProperty("usefilebuffer","off")
set $usekeyfinder$ = GetProductProperty("usekeyfinder","on")
set $readfromfile$ = GetProductProperty("readfromfile","off")
set $Highloglevel$ = "6"
set $Midloglevel$ = "5"
set $Lowloglevel$ = "5"
;set $Highloglevel$ = "5"
;set $Midloglevel$ = "5"
;set $Lowloglevel$ = "6"

setloglevel = $Highloglevel$


Message "Running software audit..."
ShowBitmap "%SCRIPTPATH%\swaudit.png" "Software Inventarisierung"

if GetMsVersionInfo < "5.0"
	logError "Installation aborted: wrong OS version: only win2k and above alowed"
	isFatalError
endif

comment "detect if we run in opsi service mode"
if "%installingProdName%" = ""
	comment " we running standalone"
	set $write2file$ = "on"
else
	comment " we run in opsi service mode"
	set $write2file$ = "off"
endif

setloglevel = $Highloglevel$

if $readfromfile$ = "off"
	if $usekeyfinder$ = "on"
		message "collecting license keys ..."
		Files_del_temp
		Winbatch_start_keyfinder
		set $LicenseSections$ = GetSectionNames("c:\opsi.org\tmp\swaudit_keys.ini")
	endif
	if GetSystemType = "64 Bit System"
		message "collecting 64 Bit products ..."
		set $uninstKeys$ = getRegistryKeyList64($uninstKey$)
		message "collecting 64 Bit product details ..."
		set $architecture$ = "x64"
		set $subversion$ = ""
		set $Language$ = ""
		for %aktkey% in $uninstKeys$ do sub_getswdetails4_64
	endif
	
	message "collecting 32 Bit products ..."
	set $uninstKeys$ = getRegistryKeyList32($uninstKey$)
	setloglevel = $Highloglevel$
	
	message "collecting 32 Bit product details ..."
	set $architecture$ = "x86"
	set $subversion$ = ""
	set $Language$ = ""
	for %aktkey% in $uninstKeys$ do sub_getswdetails4_32
	setloglevel=$Highloglevel$
	message "collecting os details ..."
	sub_get_windows_info
	sub_create_hash4
	setloglevel=$Highloglevel$
	if GetMsVersionInfo >= "6"
		message "collecting hotfixes ..."
		sub_get_nt6_hotfix_info
		setloglevel = $Highloglevel$
	endif
else
	comment "read from file - only for debugging"
	setloglevel=7
	set $softwareHashlist$ = loadUnicodeTextFile("c:\opsi.org\tmp\auditsoftware_%PCName%.txt")
	set $softwareOnClientHashlist$ = loadUnicodeTextFile("c:\opsi.org\tmp\auditsoftwareOnClient_%PCName%.txt")
endif
if $write2file$ = "on"
	message "writing results back to file ..."
	Files_del_old
	for %s% in $softwareHashlist$ do sub_build_auditsoftware
	for %s% in $softwareOnClientHashlist$ do sub_build_auditSoftwareOnClient
else
	message "writing results back to service ..."
	if $usefilebuffer$ = "on"
		Files_del_old
		for %s% in $softwareHashlist$ do sub_build_auditsoftware
		for %s% in $softwareOnClientHashlist$ do sub_build_auditSoftwareOnClient
		set $softwareHashlist$ = loadTextFile("c:\opsi.org\tmp\auditsoftware_%PCName%.txt")
		set $softwareOnClientHashlist$ = loadTextFile("c:\opsi.org\tmp\auditsoftwareOnClient_%PCName%.txt")
	endif
	setloglevel = 8
	markErrorNumber
	
	opsiservicecall_auditSoftwareOnClient_setObsolete
	if errorsOccuredSinceMark > 0
		isFatalError
	endif
	OpsiServiceHashList_auditSoftware_createObjects
	if errorsOccuredSinceMark > 0
		isFatalError
	endif
	OpsiServiceHashList_auditSoftwareOnClient_createObjects
	if errorsOccuredSinceMark > 0
		isFatalError
	endif
endif
Files_del_temp

[sub_getswdetails4_32]
setloglevel=$Midloglevel$
comment "handling if key contains quotation marks"
set $aktKeyVar$ = EscapeString: %aktkey%
if not ($aktKeyVar$ = "")
	set $installSize$ = "-1"
	set $usageFrequency$ = "-1"
	set $binaryName$ = ""
	set $TVID$ = ""
	set $lastUsed$ = ""
	set $Language$ = ""
	set $winSoftwareId$ = $aktKeyVar$
	if not ($winSoftwareId$ = "") 
		set $displayVersion$ = GetRegistrystringvalue32("["+$uninstKey$+"\"+$aktKeyVar$+"] DisplayVersion")
		set $displayName$ = GetRegistrystringvalue32("["+$uninstKey$+"\"+$aktKeyVar$+"] displayName")
		set $binaryName$ = GetRegistrystringvalue32("["+$uninstKey$+"\"+$aktKeyVar$+"] binaryName")
		set $TVID$ = GetRegistrystringvalue32("["+$Teamviewer$+"\"+$aktKeyVar$+"] ClientID")
		set $uninstallString$ = GetRegistrystringvalue32("["+$uninstKey$+"\"+$aktKeyVar$+"] uninstallString")
		set $licenseKey$ = GetValueFromInifile("c:\opsi.org\tmp\swaudit_keys.ini",$winSoftwareId$,"License key","")
		
		set $binaryName$ = GetRegistrystringvalue ("["+$uninstKey$+"\"+$aktKeyVar$+"] binaryName")
		if not($binaryName$ = "")
			if FileExists($binaryName$)
				set $VerInfoMap$ = getFileInfoMap($binaryName$)
				set $langCodeHex$ = DecStrToHexStr(getValue("Language ID 0",$VerInfoMap$),"4")
				set $Language$ = LangCodeByHex($langCodeHex$)
			endif
		endif
		if $extended_search$ = "on"
			set $SlowInfoMap$ = GetSlowInfoMap($winSoftwareId$,"on")
			if count($SlowInfoMap$) > "0"
				set $binaryName$ = getValue("binaryName",$SlowInfoMap$)
				if ($binaryName$ = "") or ($binaryName$ = "NULL")
					set $binaryName$ = ""
				endif
				set $installSize$ = getValue("installSize",$SlowInfoMap$)
				if ($installSize$ = "") or ($installSize$ = "NULL")
					set $installSize$ = "0"
				endif
				set $lastUsed$ = getValue("lastUsed",$SlowInfoMap$)
				if ($lastUsed$ = "") or ($lastUsed$ = "NULL")
					set $lastUsed$ = ""
				endif
				set $usageFrequency$ = getValue("usageFrequency",$SlowInfoMap$)
				if ($usageFrequency$ = "") or ($usageFrequency$ = "NULL")
					set $usageFrequency$ = "0"
				endif
				if not(($binaryName$ = "") or ($binaryName$ = "NULL"))
					if FileExists($binaryName$)
						set $VerInfoMap$ = getFileInfoMap($binaryName$)
						set $langCodeHex$ = DecStrToHexStr(getValue("Language ID 0",$VerInfoMap$),"4")
						set $Language$ = LangCodeByHex($langCodeHex$)
					endif
				endif
			endif
		endif
		sub_create_hash4
	endif
endif

[sub_getswdetails4_64]
setloglevel=$Midloglevel$
comment "handling if key contains quotation marks"
set $aktKeyVar$ = EscapeString: %aktkey%
if not ($aktKeyVar$ = "")
	set $installSize$ = "-1"
	set $usageFrequency$ = "-1"
	set $lastUsed$ = ""
	set $binaryName$ = ""
	set $Language$ = ""
	set $winSoftwareId$ = $aktKeyVar$
	if not ($winSoftwareId$ = "") 
		set $Language$ = ""
		set $binaryName$ = ""
		set $displayVersion$ = GetRegistrystringvalue64 ("["+$uninstKey$+"\"+$aktKeyVar$+"] DisplayVersion")
		set $displayName$ = GetRegistrystringvalue64 ("["+$uninstKey$+"\"+$aktKeyVar$+"] displayName")
		set $TVID$ = GetRegistrystringvalue64 ("["+$Teamviewer$+"\"+$aktKeyVar$+"] ClientID")
		set $uninstallString$ = GetRegistrystringvalue64 ("["+$uninstKey$+"\"+$aktKeyVar$+"] uninstallString")
		set $licenseKey$ = GetValueFromInifile("c:\opsi.org\tmp\swaudit_keys.ini",$winSoftwareId$,"License key","")
		
		set $binaryName$ = GetRegistrystringvalue64 ("["+$uninstKey$+"\"+$aktKeyVar$+"] binaryName")
		if not($binaryName$ = "") 
			if FileExists($binaryName$)
				set $VerInfoMap$ = getFileInfoMap($binaryName$)
				set $langCodeHex$ = DecStrToHexStr(getValue("Language ID 0",$VerInfoMap$),"4")
				set $Language$ = LangCodeByHex($langCodeHex$)
			endif
		endif

		if $extended_search$ = "on"
			set $SlowInfoMap$ = GetSlowInfoMap($winSoftwareId$,"off")
			if count($SlowInfoMap$) > "0"
				set $binaryName$ = getValue("binaryName",$SlowInfoMap$)
				if ($binaryName$ = "") or ($binaryName$ = "NULL")
					set $binaryName$ = ""
				endif
				set $installSize$ = getValue("installSize",$SlowInfoMap$)
				if ($installSize$ = "") or ($installSize$ = "NULL")
					set $installSize$ = "-1"
				endif
				set $lastUsed$ = getValue("lastUsed",$SlowInfoMap$)
				if ($lastUsed$ = "") or ($lastUsed$ = "NULL")
					set $lastUsed$ = ""
				endif
				set $usageFrequency$ = getValue("usageFrequency",$SlowInfoMap$)
				if ($usageFrequency$ = "") or ($usageFrequency$ = "NULL")
					set $usageFrequency$ = "-1"
				endif
				if not(($binaryName$ = "") or ($binaryName$ = "NULL"))
					if FileExists($binaryName$)
						set $VerInfoMap$ = getFileInfoMap($binaryName$)
						set $langCodeHex$ = DecStrToHexStr(getValue("Language ID 0",$VerInfoMap$),"4")
						set $Language$ = LangCodeByHex($langCodeHex$)
					endif
				endif
			endif
		endif
		sub_create_hash4
	endif
endif

[sub_get_windows_info]
DefVar $CurrentVersionProductName$
DefVar $CurrentVersionCSDVersion$
DefVar $CurrentVersionProductId$
DefVar $CurrentVersionCurrentVersion$
DefStringList $localeMap$

set $installSize$ = "-1"
set $usageFrequency$ = "-1"
set $binaryName$ = ""
set $lastUsed$ = ""

if GetMsVersionInfo < "5.1"
	; GetRegistryStringValueSysNative does not work at win2k
	; i.e. Windows 2000
	Set $CurrentVersionProductName$ = GetRegistryStringValue("[HKLM\Software\Microsoft\Windows NT\CurrentVersion] ProductName")
	; i.e. ServicePack 1
	Set $CurrentVersionCSDVersion$ = GetRegistryStringValue("[HKLM\Software\Microsoft\Windows NT\CurrentVersion] CSDVersion")
	; i.e. 00376-165-5790905-86892
	; http://wiki.lunarsoft.net/wiki/Product_IDs
	; xxxxx-yyy-zzzzzzz-zzzzz
	; xxxxx: microsoft product code (platform, build, language, and version of windows)
	; yyy:   channel id (OEM, Volume License, Retail, bundle/Not For Resale)
	Set $CurrentVersionProductId$ = GetRegistryStringValue("[HKLM\Software\Microsoft\Windows NT\CurrentVersion] ProductId")
	; i.e. 6.1
	Set $CurrentVersionCurrentVersion$ = GetRegistryStringValue("[HKLM\Software\Microsoft\Windows NT\CurrentVersion] CurrentVersion")
else
	; i.e. Windows 7 professional N
	Set $CurrentVersionProductName$ = GetRegistryStringValueSysNative("[HKLM\Software\Microsoft\Windows NT\CurrentVersion] ProductName")
	; i.e. ServicePack 1
	Set $CurrentVersionCSDVersion$ = GetRegistryStringValueSysNative("[HKLM\Software\Microsoft\Windows NT\CurrentVersion] CSDVersion")
	; i.e. 00376-165-5790905-86892
	; http://wiki.lunarsoft.net/wiki/Product_IDs
	; xxxxx-yyy-zzzzzzz-zzzzz
	; xxxxx: microsoft product code (platform, build, language, and version of windows)
	; yyy:   channel id (OEM, Volume License, Retail, bundle/Not For Resale)
	Set $CurrentVersionProductId$ = GetRegistryStringValueSysNative("[HKLM\Software\Microsoft\Windows NT\CurrentVersion] ProductId")
	; i.e. 6.1
	Set $CurrentVersionCurrentVersion$ = GetRegistryStringValueSysNative("[HKLM\Software\Microsoft\Windows NT\CurrentVersion] CurrentVersion")
endif

Set $winSoftwareId$  = "ms_windows_" + takeString(0, splitString($CurrentVersionProductId$, "-")) + "-" + takeString(1, splitString($CurrentVersionProductId$, "-"))
Set $displayVersion$ = $CurrentVersionCurrentVersion$
Set $displayName$    = $CurrentVersionProductName$
if not ($CurrentVersionCSDVersion$ = "")
	Set $displayName$ = $displayName$ + " (" + $CurrentVersionCSDVersion$ + ")"
endif
Set $uninstallString$ = ""
Set $name$ = $displayName$
Set $version$ = $CurrentVersionCurrentVersion$
Set $subversion$ = takeString(0, splitString($CurrentVersionProductId$, "-")) + "-" + takeString(1, splitString($CurrentVersionProductId$, "-"))
set $licenseKey$ = GetValueFromInifile("c:\opsi.org\tmp\swaudit_keys.ini",$winSoftwareId$,"License key","")

Set $localeMap$ = getLocaleInfoMap
;(string  19)system_default_lang_region=de-DE
;Set $Language$ = takeString(1, splitString(takeString(19, $localeMap$), "=") )
Set $Language$ = getValue("system_default_lang_region",$localeMap$)

if (GetSystemType = "64 Bit System")
	Set $architecture$ = "x64"
else
	Set $architecture$ = "x86"
endif

[sub_get_nt6_hotfix_info]
setloglevel = $Highloglevel$
Set $displayVersion$ = ""
Set $uninstallString$ = ""
Set $version$ = ""
Set $subversion$ = ""
set $licenseKey$ = ""
set $installSize$ = "-1"
set $usageFrequency$ = "-1"
set $binaryName$ = ""
set $lastUsed$ = ""
set $Language$ = LangCodeByHex("0x0000")

set $resultlist$ = GetOutstreamFromSection('DosInAnIcon_get_nt6_hofixes')
set $resultlist$ = getListContaining($resultlist$, "KB")
for %akthotfix% in $resultlist$ do sub_process_nt6_hotfix_info

[sub_process_nt6_hotfix_info]
setloglevel=$Midloglevel$
Set $winSoftwareId$  = trim("%akthotfix%")
Set $displayName$    = trim("%akthotfix%")
Set $name$ = $displayName$
if (GetSystemType = "64 Bit System")
	Set $architecture$ = "x64"
else
	Set $architecture$ = "x86"
endif
sub_create_hash4

[DosInAnIcon_get_nt6_hofixes]
@echo off
wmic qfe get hotfixid


[sub_create_hash4]
if $displayName$ = ""
	set $name$ = $winSoftwareId$
else
	set $name$ = $displayName$
endif
set $version$ = $displayVersion$

setloglevel = $Highloglevel$
comment ""
comment "next product is...."
comment "$name$  --------------= "+$name$

;comment "corrected name ---------
comment "$version$ ------------= "+$version$
comment "$TVID$ --------------= "+$TVID$
comment "$subVersion$ ---------= "+$subVersion$
comment "$language$ -----------= "+$language$
comment "$architecture$ -------= "+$architecture$
comment "$windowsSoftwareId$ --= "+$winSoftwareId$
comment "$windowsDisplayName$ -= "+$displayName$


comment "$windowsDisplayVersion$ = "+$displayVersion$
comment "$uninstallString$ ----= "+$uninstallString$
comment "$installSize$ --------= "+$installSize$
comment "$displayVersion$ -----= "+$displayVersion$
comment "$binaryName$ ---------= "+$binaryName$
comment "$licenseKey$ ---------= "+$licenseKey$

setloglevel = $Lowloglevel$
; auditSoftware
;    name, version, subVersion, language, architecture, windowsSoftwareId=None, windowsDisplayName=None, windowsDisplayVersion=None, installSize=None
; auditSoftwareOnClient
;    name, version, subVersion, language, architecture, clientId, uninstallString=None, binaryName=None, firstseen=None, lastseen=None, state=None, usageFrequency=None, lastUsed=None

; collecting the 'usage frequence' and 'last used' may be illegal according to the laws about employee data privacy
set $lastUsed$ = ""
set $usageFrequency$ = "-1"

;set $ident$ = $name$+";"+$version$+";"+$subversion$+";"+$language$+";"+$architecture$
set $softwareHashlist$ = addtolist($softwareHashlist$, "[newmap]")
set $softwareHashlist$ = addtolist($softwareHashlist$, "type=AuditSoftware")
set $softwareHashlist$ = addtolist($softwareHashlist$, "name="+strPart($name$,"1","99"))
set $softwareHashlist$ = addtolist($softwareHashlist$, "version="+strPart($version$,"1","99"))
set $softwareHashlist$ = addtolist($softwareHashlist$, "subVersion="+strPart($subversion$,"1","99"))
set $softwareHashlist$ = addtolist($softwareHashlist$, "language="+strPart($Language$,"1","9"))
set $softwareHashlist$ = addtolist($softwareHashlist$, "architecture="+strPart($architecture$,"1","3"))
set $softwareHashlist$ = addtolist($softwareHashlist$, "windowsSoftwareId="+strPart($winSoftwareId$,"1","99"))
set $softwareHashlist$ = addtolist($softwareHashlist$, "windowsDisplayName="+strPart($displayName$,"1","99"))
set $softwareHashlist$ = addtolist($softwareHashlist$, "windowsDisplayVersion="+strPart($displayVersion$,"1","99"))
set $softwareHashlist$ = addtolist($softwareHashlist$, "installSize="+$installSize$)
set $softwareHashlist$ = addtolist($softwareHashlist$, "teamviewerId="+strPart($TVID$,"1","9"))

set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "[newmap]")
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "type=AuditSoftwareOnClient")
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "name="+strPart($name$,"1","99"))
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "version="+strPart($version$,"1","99"))
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "subVersion="+strPart($subversion$,"1","99"))
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "language="+strPart($Language$,"1","9"))
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "architecture="+strPart($architecture$,"1","3"))
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "clientId="+strPart($clientId$,"1","254"))
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "uninstallString="+strPart($uninstallString$,"1","199"))
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "binaryName="+strPart($binaryName$,"1","99"))
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "usageFrequency="+$usageFrequency$)
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "licenseKey="+strPart($licenseKey$,"1","254"))
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "teamviewerId="+strPart($TVID$,"1","9"))


if not($lastUsed$ = "")
	set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "lastUsed="+$lastUsed$)


endif

[execWith_getuninstallkeys]
@echo off
reg query $uninstkey$

[DosInAnIcon_getuninstallkeys]
@echo off
regedit /e "c:\opsi.org\tmp\myreg.reg" $uninstkey$

[sub_remove_brackets]
set $tmp$ = takeFirstStringContaining(splitstring($aktKeyVar$,"["), $uninstkey$)
set $tmp$ = takeFirstStringContaining(splitstring($tmp$,"]"), $uninstkey$)
set $uninstkeys$ = addtolist($uninstkeys$, $tmp$)

[Winbatch_start_keyfinder]
"%SCRIPTPATH%\keyfinder\keyfinder.exe" /close /saveini "c:\opsi.org\tmp\" /file "swaudit_keys.ini"

[Files_del_temp]
del "c:\opsi.org\tmp\swaudit_keys.ini"

[opsiservicecall_authenticated]
"method": "authenticated"
"params": [
          ]

[opsiservicecall_setSoftwareInformation]
"method": "setSoftwareInformation"
"params": [
          "$clientId$"
          '$swAuditInfoStr$'
          ]

[opsiservicecall_getPossibleMethods_listOfHashes]
"method": "getPossibleMethods_listOfHashes"
"params": [
          ]


[opsiservicecall_auditSoftwareOnClient_setObsolete]
"method": "auditSoftwareOnClient_setObsolete"
"params": [
          "$clientId$"
          ]

; name, version, subVersion, language, architecture, clientId, teamviewerId, uninstallString=None, binaryName=None, firstseen=None, lastseen=None, state=None, usageFrequency=None, lastUsed=None
[OpsiServiceHashList_auditSoftware_createObjects]
"method": "auditSoftware_createObjects"
"HashList": "$softwareHashlist$"
"params": [
          ]
		  
; name, version, subVersion, language, architecture, windowsSoftwareId=None, windowsDisplayName=None, windowsDisplayVersion=None, installSize=None
[OpsiServiceHashList_auditSoftwareOnClient_createObjects]
"method": "auditSoftwareOnClient_createObjects"
"HashList": "$softwareOnClientHashlist$"
"params": [
          ]

[sub_build_auditsoftware]
set $element$ = EscapeString:%s%
set $line$ = composeString(splitstring($element$, "'"), "''")
Patchtextfile_auditsoftware "c:\opsi.org\tmp\auditsoftware_%PCName%.txt"

[Patchtextfile_auditsoftware]
AppendLine '$line$'

[sub_build_auditSoftwareOnClient]
set $element$ = EscapeString:%s%
set $line$ = composeString(splitstring($element$, "'"), "''")
Patchtextfile_auditSoftwareOnClient "c:\opsi.org\tmp\auditsoftwareOnClient_%PCName%.txt"

[Patchtextfile_auditSoftwareOnClient]
AppendLine '$line$'

[Files_del_old]
del -f "c:\opsi.org\tmp\auditsoftware_%PCName%.txt"
del -f "c:\opsi.org\tmp\auditsoftwareOnClient_%PCName%.txt"

Re: swaudit zusätzlicher registry key auslesen und im Configed anzeigen

Verfasst: 23 Nov 2015, 07:56
von Lukas
Hy zusammen,
das Problem ist auf den Schulung, ein danke an Herrn Dr. Wolf, gelöst worden.
Eine Infomation vorweg, swaudit ist eine geschlossene abfrage, hier eine weitere Spalte in der MySQL anlegen zulassen ist nicht vorgesehen und nur mittels änderungen am Code selbst zu ändern. Hier selbst Hand anzulegen würde die möglichkeit eines reibungslosen Updates stark einschränkt.

Es gibt aber mehrere möglichkeiten meine gewünschte Information aus der Reg z.b. in die Hostbeschreibung, einer Hosteigenschaft und zugar mit änderungen an der swaudit.ins (Vorsicht bei Updates) in die Spalte der Lizenzkeys zurück zuschreiben.

Für mich ist das Problem gelöst. ;)

Re: swaudit zusätzlicher registry key auslesen und im Configed anzeigen

Verfasst: 24 Nov 2015, 14:03
von n.wenselowski
Hi,
Lukas hat geschrieben:Eine Infomation vorweg, swaudit ist eine geschlossene abfrage, hier eine weitere Spalte in der MySQL anlegen zulassen ist nicht vorgesehen und nur mittels änderungen am Code selbst zu ändern. Hier selbst Hand anzulegen würde die möglichkeit eines reibungslosen Updates stark einschränkt.
Okay, das habe ich dann vllt falsch verstanden. Eigene Spalten sind tatsächlich kompliziert, eigene Reihen (aka. Einträge) weniger.
Lukas hat geschrieben:Für mich ist das Problem gelöst. ;)
Super!


Gruß

Niko