[RESUELTO] Cómo cifrar tus contraseñas de Wapt

Preguntas sobre paquetes WAPT / Solicitudes y ayuda sobre paquetes WAPT.
Reglas del foro
Reglas del foro de la comunidad
* Soporte en inglés en www.reddit.com/r/wapt
* El soporte de la comunidad en francés está disponible en este foro
* Por favor, anteponga [RESUELTO] al título del tema si está resuelto.
* Por favor, no edite un tema que esté etiquetado como [RESUELTO]. Abra un nuevo tema haciendo referencia al anterior.
* Especifique la versión de WAPT instalada, la versión completa y el número de compilación (2.2.1.11957 / 2.2.2.12337 / etc.), así como la edición Enterprise/Discovery.
* Las versiones 1.8.2 y anteriores ya no son compatibles. Las únicas preguntas aceptadas sobre la versión 1.8.2 están relacionadas con la actualización a una versión compatible (2.1, 2.2, etc.).
* Especifique el sistema operativo del servidor (Linux/Windows) y la versión (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Especifique el sistema operativo de la máquina de administración/creación de paquetes y de la máquina con el agente problemático, si corresponde (Windows 7/10/11/Debian 11/etc.).
* Evite hacer varias preguntas al abrir un tema, ya que podría ser ignorado. Si hay varios temas, ábralos por separado, preferiblemente uno tras otro y no todos a la vez (es decir, no sature el foro con spam).
* Incluya fragmentos de código, capturas de pantalla y otras imágenes directamente en la publicación. Los enlaces a Pastebin, Bitly y otros sitios de terceros serán eliminados sistemáticamente.
* Como en cualquier foro comunitario, el soporte es proporcionado voluntariamente por los miembros. Si necesita soporte comercial, puede comunicarse con el departamento de ventas de Tranquil IT al 02.40.97.57.55.
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

20 de julio de 2018 - 10:27

Debes colocar tu script en la carpeta de instalación de wapt.
Louisinger
Mensajes: 27
Inscripción: 26 de junio de 2018 - 09:40

20 de julio de 2018 - 10:49

Bueno, es un archivo .pyd, fue mi error, gracias
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

20 de julio de 2018 - 13:48

No dudes en publicar tu guion una vez que lo hayas terminado.

¡Contribuirás a la comunidad de Wapt!
Louisinger
Mensajes: 27
Inscripción: 26 de junio de 2018 - 09:40

20 de julio de 2018 - 15:39

Aquí está mi código, anonimizado y con los máximos comentarios posibles. Espero que te sirva.

Código: Seleccionar todo

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)

PD: Eso definitivamente merece algunas pegatinas de Tranquil IT, ¿no crees?
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

23 de julio de 2018 - 09:47

¿No desea proporcionar la versión anónima de la función mafonctiongetGroup? :rollo:
Louisinger
Mensajes: 27
Inscripción: 26 de junio de 2018 - 09:40

23 de julio de 2018 - 13:09

Es una función específica de cada organización, e incluso anónima, dudo que tenga sentido proporcionarla. Pero veré qué puedo hacer ;)
Louisinger
Mensajes: 27
Inscripción: 26 de junio de 2018 - 09:40

23 de julio de 2018 - 13:47

Aquí está getGroup:
Suponiendo que los títulos de los puestos estén en el formato: X000Y100.organisation.fr
donde X000 es la referencia del sitio.

Código: Seleccionar todo

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 tiene el formato:

Código: Seleccionar todo

alias_groupe = {
    0:'hors-lot'
    1:'lot1',
    2:'lot2',
    3:'lot3'
}
y el conmutador que permite cambiar entre sitios y grupos:

Código: Seleccionar todo

switcher = {
    'X000':1
    'X001':2
    'X002':1
    'Y010':3
}
Aquí lo tienes, es simple y simplista, pero ahorra una gran cantidad de tiempo a la hora de clasificar las máquinas.
Bloqueado