Contactez nous

[RESOLU] chiffrer ses pass wapt

Questions about WAPT Packaging / Requêtes et aides autour des paquets Wapt.
Règles du forum

* Questions can be asked in English or in French. If the thread is started in English, stick to English, if it is started in French, stick to French.
* Vous pouvez poser vos questions en Français ou en Anglais. Si un sujet est commencé en français, merci de répondre en français. Si un sujet est commencé en anglais, merci de répondre en anglais.
* Please prefix of the title of the thread to [SOLVED] if it is solved.
* Merci de préfixer le titre du thread par [RESOLU] si il est résolu.

Il faut placer votre script dans le dossier d'installation de wapt.
Ok c'est un .pyd autant pour moi merci
N'hésitez pas à poster votre script une fois celui-ci terminé.

Cela participe à la vie de la communauté wapt !
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 ?
Vous voulez pas donner la fonction mafonctiongetGroup anonymisée ? :roll:
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 ;)
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.