[RISOLTO] Creazione di un pacchetto che consente la ricerca di un file sulle workstation

Domande sul packaging WAPT / Richieste e assistenza sui pacchetti Wapt.
Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Supporto della community in francese disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata, la versione completa e il numero di build (2.2.1.11957 / 2.2.2.12337 / ecc.) nonché l'edizione Enterprise/Discovery.
* Le versioni 1.8.2 e precedenti non sono più supportate. Le uniche domande accettate relative alla versione 1.8.2 riguardano l'aggiornamento a una versione supportata (2.1, 2.2, ecc.).
* Specificare il sistema operativo del server (Linux/Windows) e la versione (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti e della macchina con l'agente problematico, se applicabile (Windows 7/10/11/Debian 11/ecc.).
* Evitare di porre più domande quando si apre una discussione, altrimenti potrebbe essere ignorata. Se ci sono più discussioni, aprirle separatamente, preferibilmente una dopo l'altra e non tutte contemporaneamente (ovvero, non intasare il forum).
* Includere frammenti di codice, screenshot e altre immagini direttamente nel post. I link a Pastebin, Bitly e altri siti di terze parti verranno sistematicamente rimossi.
* Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se si necessita di supporto commerciale, è possibile contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Bloccato
alex_30
Messaggi: 14
Registrazione: 8 luglio 2020 - 17:33

7 febbraio 2024 - 17:08

Ciao a tutti,

La versione del mio server WAPT è WAPT Server 2.4.0.14143 Enterprise Edition su Windows Server 2019 Standard.
Creo i pacchetti dal mio computer che esegue Microsoft Windows 11 Professional versione 10.0.22631 Build 22631 con WAPT Agent versione 2.4.0.14143-4

Mi scuso in anticipo se questa domanda è già stata posta, ma non sono riuscito a trovare un pacchetto nello store né alcuna informazione sul forum.

Voglio creare un pacchetto che mi consenta di scoprire se un file esiste sulle workstation.

Ho provato il seguente codice:

Codice: Seleziona tutto

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

def install():
    for fn in find_all_files('c:\\','*nomdufichier'):
            print(fn)
Ma il pacchetto genera un errore non appena vengono negati i permessi; inoltre non posso escludere questi percorsi:

Codice: Seleziona tutto

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é

Puoi aiutarmi?

Forse dovrei prendere in considerazione una funzione di audit, ma non ho ancora utilizzato quella parte.
Nella maggior parte dei casi utilizziamo i pacchetti del negozio.

Grazie.
Avatar utente
dcardon
Esperto WAPT
Messaggi: 1908
Registrazione: 18 giugno 2014 - 09:58
Ubicazione: Saint Sébastien sur Loire
Contatto:

8 febbraio 2024 - 12:41

Ciao Alexandre,

due cose:

* Per quanto riguarda il problema dei permessi, se hai eseguito il comando in PyScripter, è normale ricevere errori di "accesso negato". L'amministratore non è root; è solo "sudoer" e non ha accesso predefinito a tutte le directory. Puoi provare a eseguirlo come account LOCAL SYSTEM se è più adatto.

* Per filtrare le directory, puoi usare funzioni Python più generiche come os.walk o glob.glob. Le funzioni di setuphelper sono progettate per essere intuitive e quindi non hanno tutte le opzioni disponibili.

Cordiali saluti,

Dneis
Denis Cardon - Tranquil IT
Condividi le tue esperienze su WAPT! Inviaci gli URL dei tuoi blog e articoli nella "La tua opinione del forum e li pubblicheremo sul di WAPT
alex_30
Messaggi: 14
Registrazione: 8 luglio 2020 - 17:33

13 febbraio 2024 - 13:39

Grazie per il feedback.

Per quanto riguarda il primo punto, il comando non è stato lanciato da PyScripter.

Gli errori si sono verificati durante l'installazione del pacchetto.

Alla fine ci sono riuscito con pathlib; ecco il codice:

Codice: Seleziona tutto

# -*- 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
Messaggi: 14
Registrazione: 8 luglio 2020 - 17:33

13 febbraio 2024 - 14:00

L'obiettivo era riuscire a cercare i file sulle postazioni di lavoro.

Più specificamente, le app mobili che non compaiono nell'inventario e spesso non vengono aggiornate, quindi potenzialmente vulnerabili.

Il codice precedente funziona, ma avrei voluto ottimizzarlo aggiornando anche la versione del file .exe.

Ecco cosa ho testato:

Codice: Seleziona tutto

# -*- 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
Il ciclo for avrebbe dovuto trovarsi sotto l'istruzione if, ma era solo per scopi di debug.
Alla fine non sono riuscito a usare la funzione def getFileProperties(fname):
trova su: https://stackoverflow.com/questions/580 ... su Windows

Ecco il risultato:

Codice: Seleziona tutto

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')] 
Se qualcuno potesse aiutarmi ottimizzando il pacchetto per ottenere la versione eseguibile, sarebbe fantastico.

Altrimenti chiuderò l'argomento.

Grazie.
Avatar utente
dcardon
Esperto WAPT
Messaggi: 1908
Registrazione: 18 giugno 2014 - 09:58
Ubicazione: Saint Sébastien sur Loire
Contatto:

15 febbraio 2024 - 16:57

Ciao Alexandre,

Hai provato a usare la funzione getfileproperties di setuphelpers?

Codice: Seleziona tutto

>>> 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
Condividi le tue esperienze su WAPT! Inviaci gli URL dei tuoi blog e articoli nella "La tua opinione del forum e li pubblicheremo sul di WAPT
Bloccato