[RESOLU] chiffrer ses pass wapt

Questions about WAPT Packaging / Requêtes et aides autour des paquets Wapt.
Règles du forum
Règles du forum communautaire
* English support on www.reddit.com/r/wapt
* Le support communautaire en français se fait sur ce forum
* Merci de préfixer le titre du topic par [RESOLU] s'il est résolu.
* Merci de ne pas modifier un topic qui est taggé [RESOLU]. Ouvrez un nouveau topic en référençant l'ancien
* Préciser version de WAPT installée, version complète ET numéro de build (2.2.1.11957 / 2.2.2.12337 / etc.) AINSI QUE l'édition Enterprise / Discovery
* Les versions 1.8.2 et antérieures ne sont plus maintenues. Les seules questions acceptées vis à vis de la version 1.8.2 sont liés à la mise à jour vers une version supportée (2.1, 2.2, etc.)
* Préciser OS du serveur (Linux / Windows) et version (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets et de la machine avec l'agent qui pose problème le cas échéant (Windows 7 / 10 / 11 / Debian 11 / etc.)
* Eviter de poser plusieurs questions lors de l'ouverture de topic, sinon il risque d'être ignorer. Si plusieurs sujet, ouvrir plusieurs topic, et de préférence les uns après les autres et pas tous en même temps (ie ne pas spammer le forum).
* Inclure directement les morceaux de code, les captures d'écran et autres images directement dans le post. Les liens vers les pastebin, les bitly et autres sites tierces seront systématiquement supprimés.
* Comme tout forum communautaire, le support est fait bénévolement par les membres. Si vous avez besoin d'un support commercial, vous pouvez contacter le service commercial Tranquil IT au 02.40.97.57.55
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1783
Inscription : 10 juil. 2014 - 23:52
Contact :

20 juil. 2018 - 10:27

Il faut placer votre script dans le dossier d'installation de wapt.
louisinger
Messages : 27
Inscription : 26 juin 2018 - 09:40

20 juil. 2018 - 10:49

Ok c'est un .pyd autant pour moi merci
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1783
Inscription : 10 juil. 2014 - 23:52
Contact :

20 juil. 2018 - 13:48

N'hésitez pas à poster votre script une fois celui-ci terminé.

Cela participe à la vie de la communauté wapt !
louisinger
Messages : 27
Inscription : 26 juin 2018 - 09:40

20 juil. 2018 - 15:39

Voila mon code anonymisé et commenté au maximum. En espérant que ça aide.

Code : Tout sélectionner

def isGroup(myPackage):
    """
        Renvoie True si le paquet est un paquet groupe de l'AD.
        :param myPackage: nom du paquet à tester.
        :return boolean: True si myPackage appartient à groupPackages, False si non.
        :exemple:
            > isGroup('lot1')
            True
            > isGroup('tis-java8')
            False
    """
    groupPackages = {'lot1','lot2','lot3','lot4'}
    for group in groupPackages:
        if group == myPackage:
            return True
    return False


def haveGroup(depends):
    """
        Renvoie true si la ligne de dépendance en paramètre contient un des groupes.
        :param depends: ligne de dépendance au format "dependance1,dependance2,..."
        :return boolean: True si il y a un groupe False si non.
        :exemple:
            > haveGroup('tis-chrome, tis-microsoft-office, lot1')
            True
            > haveGroup('tis-chrome')
            False
    """
    if not depends :
        return False
    else :
        packages = depends.split(',')
        for p in packages:
            if isGroup(p):
                return True
        return False


def main(get_group):
    """
        Repartie les clients WAPT dans différents groupes (groupes AD).    
        :param get_group: fonction qui renvoie le nom du package group
    """
	# const
    USER = 'admin'
    URL_SERVER = '**********'
    RESULT_LIMIT = 1500
    TEMP_DIR_ROOT = 'c:/temp/*******'
    PATH_TO_CONFIGFILE = r'C:/Users/administrateur/AppData/Local/waptconsole/waptconsole.ini'
    FORCE = False

    remove_tree(TEMP_DIR_ROOT)
    myWapt = Wapt(config_filename = PATH_TO_CONFIGFILE)
    
    mycrt = r"****************"
    credentials_url = waptguihelper.login_password_dialog('admin loggin', URL_SERVER, USER, '')
    passwd_private_key = waptguihelper.key_password_dialog('Password for private key',mycrt, '')

    USER = credentials_url['user']
    PASSWORD = credentials_url['password']
    PASSWORD_KEY = passwd_private_key['keypassword']
    data = json.loads(wgets('https://%s:%s@%s/api/v1/hosts?limit=%s' % (USER, PASSWORD, URL_SERVER, RESULT_LIMIT)))
    uuid, depends, fqdn, tmpdir = '','','',''
    
    if FORCE:
            print("Force : True")
    
    for value in data['result']:    
        uuid = value.get('uuid')
        depends = value.get('depends')
        fqdn = value.get('computer_fqdn')
        if not haveGroup(depends) or FORCE:
            group_name = get_group(fqdn)
            tmpdir = makepath(TEMP_DIR_ROOT, uuid)
            myWapt.edit_host(uuid, target_directory = tmpdir, append_depends = group_name)
            myWapt.build_upload(r'%s'%tmpdir, private_key_passwd = PASSWORD_KEY, wapt_server_user = USER, wapt_server_passwd = PASSWORD)
            print("%s (%s) ---> %s"%(uuid,fqdn,group_name))

                
if __name__ == "__main__":
    main(get_group = mafonctiongetGroup)

PS : ça mérite bien quelques stickers Tranquil IT non ?
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1783
Inscription : 10 juil. 2014 - 23:52
Contact :

23 juil. 2018 - 09:47

Vous voulez pas donner la fonction mafonctiongetGroup anonymisée ? :roll:
louisinger
Messages : 27
Inscription : 26 juin 2018 - 09:40

23 juil. 2018 - 13:09

C'est une fonction propre à chaque organisation même anonymisé je doute qu'il y ai du sens à la donner. Mais bon je vais voir ce que je peux faire ;)
louisinger
Messages : 27
Inscription : 26 juin 2018 - 09:40

23 juil. 2018 - 13:47

Voila getGroup :
en imaginant que les noms des postes sont de la forme : X000Y100.organisation.fr
où X000 la référence du site.

Code : Tout sélectionner

def toSiteName(computer_fqdn):
    """
        Renvoie le nom du site en fonction du host name.
        :param computer_fqdn: full hostname d'un poste client.
        :return string: nom du site en majuscule
    """
    host = computer_fqdn.split('.')[0][0:4]
    return host.upper()

def getGroup(fqdn):
    """
        Renvoie le groupe en fonction du nom de l'hote
    """
    site_name = toSiteName(fqdn)
    group_name = alias_groupe.get(switcher.get(site_name, 0), 'hors-lot')
    return group_name
Alias_groupe est de la forme :

Code : Tout sélectionner

alias_groupe = {
    0:'hors-lot'
    1:'lot1',
    2:'lot2',
    3:'lot3'
}
et le switcher qui permet de passer des sites au groupes :

Code : Tout sélectionner

switcher = {
    'X000':1
    'X001':2
    'X002':1
    'Y010':3
}
Voila c'est du bête et méchant mais ça fait gagner un temps monstre pour trier les machines.
Verrouillé