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

Fragen zu WAPT-Paketen / Anfragen und Hilfe bezüglich WAPT-Paketen.
Forumregeln
Community-Forumregeln
* Englischer Support auf www.reddit.com/r/wapt
* Französischer Community-Support ist in diesem Forum verfügbar.
* Bitte kennzeichnen Sie gelöste Themen mit [GELÖST].
* Bitte bearbeiten Sie keine Themen, die mit [GELÖST] markiert sind. Erstellen Sie stattdessen ein neues Thema und verweisen Sie auf das alte.
* Geben Sie die installierte WAPT-Version, die vollständige Versionsnummer und die Build-Nummer (2.2.1.11957 / 2.2.2.12337 / usw.) sowie die Enterprise-/Discovery-Edition an.
* Versionen 1.8.2 und älter werden nicht mehr unterstützt. Fragen zu Version 1.8.2 werden nur beantwortet, wenn sie sich auf ein Upgrade auf eine unterstützte Version (2.1, 2.2 usw.) beziehen.
* Geben Sie das Server-Betriebssystem (Linux/Windows) und die Version (Debian Buster/Bullseye – CentOS 7 – Windows Server 2012/2016/2019) an.
* Geben Sie gegebenenfalls das Betriebssystem des Administrations-/Paketerstellungsrechners und des Rechners mit dem problematischen Agenten an (Windows 7/10/11/Debian 11/etc.).
* Vermeiden Sie es, mehrere Fragen in einem Thema zu stellen, da diese sonst möglicherweise ignoriert werden. Falls mehrere Themen relevant sind, erstellen Sie bitte separate Themen, vorzugsweise nacheinander und nicht gleichzeitig (d. h. vermeiden Sie Spam im Forum).
* Fügen Sie Code-Snippets, Screenshots und andere Bilder direkt in Ihren Beitrag ein. Links zu Pastebin, Bitly und anderen Drittanbieterseiten werden systematisch entfernt.
* Wie in jedem Community-Forum erfolgt die Unterstützung freiwillig durch die Mitglieder. Für kommerziellen Support kontaktieren Sie bitte den Vertrieb von Tranquil IT unter +44 2 40 97 57 55.
Gesperrt
alex_30
Nachrichten: 14
Anmeldung: 8. Juli 2020 – 17:33 Uhr

7. Februar 2024 – 17:08 Uhr

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.
Benutzeravatar
dcardon
WAPT-Experte
Nachrichten: 1953
Anmeldung: 18. Juni 2014 - 09:58 Uhr
Ort: Saint Sébastien sur Loire
Kontakt:

8. Februar 2024 - 12:41 Uhr

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
Denis Cardon – Tranquil IT
Teilen Sie Ihre Erfahrungen auf WAPT! Senden Sie uns Ihre Blog- und Artikel-URLs im „Ihre Meinung des Forums, und wir werden sie auf der WAPT-
alex_30
Nachrichten: 14
Anmeldung: 8. Juli 2020 – 17:33 Uhr

13. Februar 2024 – 13:39 Uhr

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'
alex_30
Nachrichten: 14
Anmeldung: 8. Juli 2020 – 17:33 Uhr

13. Februar 2024 – 14:00 Uhr

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.
Benutzeravatar
dcardon
WAPT-Experte
Nachrichten: 1953
Anmeldung: 18. Juni 2014 - 09:58 Uhr
Ort: Saint Sébastien sur Loire
Kontakt:

15. Februar 2024 – 16:57 Uhr

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': ''}
Denis Cardon – Tranquil IT
Teilen Sie Ihre Erfahrungen auf WAPT! Senden Sie uns Ihre Blog- und Artikel-URLs im „Ihre Meinung des Forums, und wir werden sie auf der WAPT-
Gesperrt