Página 1 de 1

Creación de un paquete WAPT Cleaner

Publicado: 15 de octubre de 2018 - 12:08 p. m.
por renaud.counhaye
Hola a todos, :)

he realizado una migración de servidor WAPT, de máquinas en el servidor "A" (WAPT 1.3) al servidor "X" (WAPT 1.5, que luego se actualizó a 1.6).

El problema con esta migración es que las máquinas que sufrieron el cambio a través de waptdeploy revirtieron su inventario de 1.3 a 1.5, y algunos nombres de paquetes cambiaron, mientras que otros paquetes desaparecieron.
Sin embargo, su inventario sigue siendo válido para el cliente y la consola.

Me gustaría recibir ayuda para crear un script de limpieza. Me pregunto si tienen una sugerencia mejor que esta:

El script ejecuta un `wapt-get list` y luego, usando un bucle, busca excepciones que yo habría listado previamente en una variable.
Si encuentra el paquete, ejecuta un simple `wapt-get forget xxxxxx` seguido de un `wapt-get install zzzzz` con el paquete de reemplazo.

Tal vez omití algún paso en waptdeploy para limpiar la post-instalación o pre-instalación. ¿O tal vez buscas algún paquete ya disponible para un proceso similar?

Gracias de antemano :)

(probablemente avanzaré con el sistema mencionado y lo compartiré contigo una vez que esté terminado).

Re: Creación de un paquete WAPT Cleaner

Publicado: 15 de octubre de 2018 - 20:12
por dcardon
Buenas noches Renaud,
renaud.counhaye escribió: 15 ​​de oct. de 2018 - 12:08 p. m. Realicé una migración de servidor WAPT, de máquinas en el servidor "A" WAPT 1.3 al servidor "X" WAPT 1.5 (que posteriormente se actualizó a 1.6).

El problema con esta migración es que las máquinas que sufrieron el cambio a través de waptdeploy revirtieron su inventario de 1.3 a 1.5, y algunos nombres de paquetes cambiaron, mientras que otros paquetes desaparecieron.
Sin embargo, su inventario sigue siendo válido para el cliente y la consola.
Desde la perspectiva del sistema, está actualizado: no hay paquetes más recientes que el que ya está instalado en la máquina. Así que no es incorrecto, aunque no sea exactamente lo que buscabas.
renaud.counhaye escribió: 15 ​​de octubre de 2018 - 12:08 p. m. Me gustaría recibir ayuda para crear un script de limpieza. Me gustaría saber si tienen alguna sugerencia mejor que esta:
Si no hay muchos paquetes afectados, simplemente escriba el nombre del paquete en cuestión en el cuadro de búsqueda ("palabra clave"), por ejemplo, xyz-firefox, y se listarán las máquinas que lo tienen. Nota: Tenga en cuenta que la búsqueda coincide con subcadenas, por lo que buscar xyz-firefox también mostrará las máquinas que tengan xyz-firefox-esr.
  • A continuación, seleccione "eliminar dependencias de paquetes o grupos de paquetes" para eliminar las dependencias de los paquetes en cuestión;
  • Luego puedes eliminar u olvidar el paquete seleccionando las máquinas en cuestión y, en la lista de paquetes de la derecha, hacer clic derecho y "olvidar paquetes"
Atentamente,

Denis

Re: Creación de un paquete WAPT Cleaner

Publicado: 19 de octubre de 2018 - 10:59 a. m.
por renaud.counhaye
Hola Denis,

Desafortunadamente, hay una gran cantidad de máquinas que se ven afectadas por este inventario fantasma.
Por eso estaba buscando una forma de automatizarlo, dada la imposibilidad de limpiar fácilmente el inventario de una máquina después de una migración de servidor.

Así que se me ocurrió este código muy simple:
Es posible olvidar un paquete conocido sólo por el cliente ya que no está registrado en los paquetes asignados a la máquina en la consola, por lo tanto no hay reinstalación.

Código: Seleccionar todo

# -----------------------------------------------------------------------
# This script was made in an effort to manage previous WAPT registred packages.
# Made by Renaud Counhaye for Ymagis.
# -----------------------------------------------------------------------
from setuphelpers import *

list_replaces=["chrome-fr","firefox-esr-fr","adobereader-mui"] #liste de vieux paquet aillant un remplacant
list_replaced=["chrome","firefox","adobereader"] #liste des paquets remaplcants les anciens! attention doit être dans le meme ordre!

#list de paquets à oublier tout simplement.
list_forgets=["check-viscosity","fr-standard-applications","apple-software-update","ie11","fr04-fr-Office365-and-Standard-applications","fr-web-browsers","deploy-ymagis-nxt","trend-micro-security-agent"]

uninstallkey = []

#def main():
def install():
    #check si le fichier précédent existe, si oui, kill
    if(isfile(makepath('C:','sys','logs','waptgetlist.txt'))):
        print('previous file is present')
        remove_file(makepath('C:','sys','logs','waptgetlist.txt'))
    print('start...')
    run('cmd /c wapt-get list > C:\sys\logs\waptgetlist.txt') #creation d'un fichier contenant la lsite des packets actif sur la machine
    if(isfile(makepath('C:','sys','logs','waptgetlist.txt'))):
       print('file is present')
       f=open(makepath('C:','sys','logs','waptgetlist.txt'), "r") 
       if f.mode == 'r':
            f1 = f.readlines() #lecture ligne par ligne du fichier
            for line in f1:
                data = line.split(" ")
                package = data[0]
                if package in list_replaces:
                    print '--in replaces' #si le paquet lu est dans la liste des pack a remplacer, on forget puis wapt.install 
                    point=list_replaces.index(package)
                    if(point != -1):
                        cmd = "cmd /c wapt-get forget "+package+" --force"
                        run(cmd)
                        WAPT.install(list_replaced[point],force=WAPT.options.force)
                else:
                    if package in list_forgets:
                        print '--in forgets' #si le paquet lu est dans la liste des pack a oublier, on forget 
                        point = list_forgets.index(package)
                        if(point != -1):
                            print str(point)+' found forgets'
                            cmd = "cmd /c wapt-get forget "+package+" --force"
                            run(cmd)
                        else:
                            print '++not found'
            print 'end.'

if __name__ == '__main__': #run debug
    install()
PD: Sería interesante permitir que un paquete WAPT con una clave especial fuerce a que un paquete no se asigne a la máquina en la que se está ejecutando.

Buen día,

Re: Creación de un paquete WAPT Cleaner

Publicado: 19 de octubre de 2018 - 13:57
por sfonteneau
Más simple:

https://wapt.lesfourmisduweb.org/detalle ... 9_all.wapt

Código: Seleccionar todo

import platform
from setuphelpers import *

uninstallkey=[]

def install():
    prefixpkg = control.package.split('-',1)[0]
    reader = WAPT.is_installed('%s-pdfcreator'% prefixpkg)
    if reader and Version(reader.version.split('-',1)[0]) == Version('3.2.1'):
        WAPT.forget_packages(reader.package)
        WAPT.install('%s-pdfcreator'% prefixpkg)