Seite 1 von 1

[GELÖST] Erstellung eines Pakets zur Suche nach Dateien auf Arbeitsstationen

Veröffentlicht: 7. Februar 2024 - 17:08 Uhr
von alex_30
Hallo zusammen,

Meine WAPT-Serverversion ist WAPT Server 2.4.0.14143 Enterprise Edition unter Windows Server 2019 Standard.
Ich erstelle die Pakete auf meinem Rechner mit Microsoft Windows 11 Professional Version 10.0.22631 Build 22631 und WAPT-Agent Version 2.4.0.14143-4

Ich entschuldige mich im Voraus, falls diese Frage bereits gestellt wurde, aber ich konnte weder im Shop eine entsprechende Packung noch im Forum Informationen dazu finden.

Ich möchte ein Paket erstellen, mit dem ich herausfinden kann, ob eine Datei auf den Workstations existiert.

Ich habe folgenden Code ausprobiert:

Code: Alle auswählen

# -*- coding: utf-8 -*-
from setuphelpers import *

def install():
    for fn in find_all_files('c:\\','*nomdufichier'):
            print(fn)
Das Paket wirft jedoch einen Fehler, sobald Berechtigungen verweigert werden; ich kann diese Pfade auch nicht ausschließen:

Code: Alle auswählen

File "C:\Program Files (x86)\wapt\common.py", line 4083, in install_wapt
    exitstatus = setup.install()
  File "C:\windows\TEMP\wapt4h6awkg2\setup.py", line 6, in install
  File "C:\Program Files (x86)\wapt\waptutils.py", line 1403, in find_all_files
    for f in do_find_all_files(rootdir):
  File "C:\Program Files (x86)\wapt\waptutils.py", line 1384, in do_find_all_files
    for fn in do_find_all_files(full_fn):
  File "C:\Program Files (x86)\wapt\waptutils.py", line 1384, in do_find_all_files
    for fn in do_find_all_files(full_fn):
  File "C:\Program Files (x86)\wapt\waptutils.py", line 1384, in do_find_all_files
    for fn in do_find_all_files(full_fn):
  [Previous line repeated 1 more time]
  File "C:\Program Files (x86)\wapt\waptutils.py", line 1379, in do_find_all_files
    for fn in os.listdir(absolute_rootdir):
PermissionError: [WinError 5] Accès refusé: 'c:\\users\\admaz\\AppData\\Local\\Application Data'

13 : Accès refusé

Können Sie mir helfen?

Ich muss mir eventuell eine Prüffunktion genauer ansehen, aber diesen Teil habe ich noch nicht benutzt.
Meistens verwenden wir die Packungen aus dem Laden.

Danke schön.

Betreff: Erstellen eines Pakets zur Suche nach einer Datei auf Arbeitsstationen

Veröffentlicht: 8. Februar 2024 - 12:41 Uhr
von dcardon
Hallo Alexandre,

zwei Anmerkungen:

* Bezüglich des Berechtigungsproblems: Wenn du den Befehl in PyScripter ausgeführt hast, sind „Zugriff verweigert“-Fehler normal. Der Administrator ist nicht root, sondern hat lediglich sudo-Rechte und daher nicht standardmäßig Zugriff auf alle Verzeichnisse. Versuche, den Befehl als lokales Systemkonto auszuführen, falls das besser passt.

* Zum Filtern der Verzeichnisse kannst du allgemeinere Python-Funktionen wie os.walk oder glob.glob verwenden. Die setuphelper-Funktionen sind benutzerfreundlich gestaltet und bieten daher nicht alle verfügbaren Optionen.

Viele Grüße,

Dneis

Betreff: Erstellen eines Pakets zur Suche nach einer Datei auf Arbeitsstationen

Veröffentlicht: 13. Februar 2024 – 13:39 Uhr
von alex_30
Vielen Dank für das Feedback.

Was den ersten Punkt betrifft, so wurde der Befehl nicht von PyScripter ausgeführt.

Die Fehler traten während der Paketinstallation auf.

Am Ende gelang es mir mit pathlib; hier ist der Code:

Code: Alle auswählen

# -*- coding: utf-8 -*-
from setuphelpers import *
import pathlib

def install():
    pass

def audit():
    #Emplacement de la recherche
    fileDir = r'C:\\'
    #Partie du nom de fichier à rechercher
    fileExt = r"**\*nomdufichier*"
    liste_fichiers = list(pathlib.Path(fileDir).glob(fileExt))
    if liste_fichiers:
        print('Fichiers trouvés: %s ' %liste_fichiers)
        return 'WARNING'
    print('Aucun fichiers trouvés')
    return 'OK'

Betreff: Erstellen eines Pakets zur Suche nach einer Datei auf Arbeitsstationen

Veröffentlicht: 13. Februar 2024 - 14:00 Uhr
von alex_30
Ziel war es, Dateien auf den Arbeitsstationen suchen zu können.

Genauer gesagt handelt es sich um mobile Apps, die nicht im Inventar aufgeführt sind. Und oft werden sie nicht aktualisiert und sind daher potenziell angreifbar

Der bisherige Code funktioniert, aber ich hätte ihn gerne optimiert, indem ich auch die Version der .exe-Datei aktualisiert hätte

Folgendes habe ich getestet:

Code: Alle auswählen

# -*- coding: utf-8 -*-
from setuphelpers import *
import pathlib
import win32api

def install():
    pass

def audit():
    fileDir = r'C:\\'
    fileExt = r"**\*nomdufichier*"
    liste_fichiers = list(pathlib.Path(fileDir).glob(fileExt))
    for fname in liste_fichiers:
        properties= getFileProperties(fname)
        print('properties =  %s ' %properties)
        print('Fichiers trouvés: %s propriétés %s' %(fname , properties))
    if liste_fichiers:
        print('Fichiers trouvés: %s ' %liste_fichiers)
        return 'WARNING'
    print('Aucun fichiers trouvés')
    return 'OK'



#==============================================================================
def getFileProperties(fname):
#==============================================================================
    """
    Read all properties of the given file return them as a dictionary.
    """
    propNames = ('Comments', 'InternalName', 'ProductName',
        'CompanyName', 'LegalCopyright', 'ProductVersion',
        'FileDescription', 'LegalTrademarks', 'PrivateBuild',
        'FileVersion', 'OriginalFilename', 'SpecialBuild')

    props = {'FixedFileInfo': None, 'StringFileInfo': None, 'FileVersion': None}

    try:
        # backslash as parm returns dictionary of numeric info corresponding to VS_FIXEDFILEINFO struc
        fixedInfo = win32api.GetFileVersionInfo(fname, '\\')
        props['FixedFileInfo'] = fixedInfo
        props['FileVersion'] = "%d.%d.%d.%d" % (fixedInfo['FileVersionMS'] / 65536,
                fixedInfo['FileVersionMS'] % 65536, fixedInfo['FileVersionLS'] / 65536,
                fixedInfo['FileVersionLS'] % 65536)

        # \VarFileInfo\Translation returns list of available (language, codepage)
        # pairs that can be used to retreive string info. We are using only the first pair.
        lang, codepage = win32api.GetFileVersionInfo(fname, '\\VarFileInfo\\Translation')[0]

        # any other must be of the form \StringfileInfo\%04X%04X\parm_name, middle
        # two are language/codepage pair returned from above

        strInfo = {}
        for propName in propNames:
            strInfoPath = u'\\StringFileInfo\\%04X%04X\\%s' % (lang, codepage, propName)
            ## print str_info
            strInfo[propName] = win32api.GetFileVersionInfo(fname, strInfoPath)

        props['StringFileInfo'] = strInfo
    except:
        pass

    return props
Die for-Schleife hätte eigentlich unter der if-Anweisung stehen sollen, diente aber nur zu Debugging-Zwecken
Am Ende konnte ich die Funktion def getFileProperties(fname) nicht verwenden:
finden auf: https://stackoverflow.com/questions/580 ... on-windows

Hier ist das Ergebnis:

Code: Alle auswählen

Auditing XXX-searchfile
properties =  {'FixedFileInfo': None, 'StringFileInfo': None, 'FileVersion': None} 
Fichiers trouvés: C:\Users\user1\AppData\Roaming\AnyDesk propriétés {'FixedFileInfo': None, 'StringFileInfo': None, 'FileVersion': None}
properties =  {'FixedFileInfo': None, 'StringFileInfo': None, 'FileVersion': None} 
Fichiers trouvés: C:\Users\user1\Downloads\AnyDesk.exe propriétés {'FixedFileInfo': None, 'StringFileInfo': None, 'FileVersion': None}
properties =  {'FixedFileInfo': None, 'StringFileInfo': None, 'FileVersion': None} 
Fichiers trouvés: C:\Users\user1\Pictures\AnyDesk propriétés {'FixedFileInfo': None, 'StringFileInfo': None, 'FileVersion': None}
properties =  {'FixedFileInfo': None, 'StringFileInfo': None, 'FileVersion': None} 
Fichiers trouvés: C:\Windows\Prefetch\ANYDESK.EXE-0A8BB3A0.pf propriétés {'FixedFileInfo': None, 'StringFileInfo': None, 'FileVersion': None}
Fichiers trouvés: [WindowsPath('C:/Users/user1/AppData/Roaming/AnyDesk'), WindowsPath('C:/Users/user1/Downloads/AnyDesk.exe'), WindowsPath('C:/Users/user1/Pictures/AnyDesk'), WindowsPath('C:/Windows/Prefetch/ANYDESK.EXE-0A8BB3A0.pf')] 
Es wäre toll, wenn mir jemand helfen könnte, das Paket so zu optimieren, dass ich eine ausführbare Version erhalte.

Andernfalls werde ich das Thema schließen.

Danke schön.

Betreff: Erstellen eines Pakets zur Suche nach einer Datei auf Arbeitsstationen

Veröffentlicht: 15. Februar 2024 – 16:57 Uhr
von dcardon
Hallo Alexandre,

Haben Sie versucht, die Funktion getfileproperties aus setuphelpers zu verwenden?

Code: Alle auswählen

>>> get_file_properties(r'c:\\program files (x86)\\wapt\wapt-get.exe')
{'Comments': '',
 'CompanyName': 'Tranquil IT',
 'FileDescription': 'Wapt line command tool',
 'FileVersion': '2.5.4.15337',
 'InternalName': '',
 'LegalCopyright': 'Tranquil IT 2012-2024',
 'LegalTrademarks': '',
 'OriginalFilename': '',
 'PrivateBuild': '',
 'ProductName': 'WAPT',
 'ProductVersion': '2.5.4',
 'SpecialBuild': ''}