Page 1 sur 1

Creation d'un paquet WAPT Cleaner

Publié : 15 oct. 2018 - 12:08
par renaud.counhaye
Salut la compagnie :)

J'ai effectuer une migration de serveur WAPT, des machines sur serveur "A" WAPT 1.3 vers serveur "X" WAPT 1.5 (qui as ensuite été update en 1.6)

Soucis de cette migration est que les machines ayant subis le changement via waptdeploy on ramener leur inventaire du 1.3 vers le 1.5 et certains noms de paquet on changer, d'autres paquet disparu.
Pourtant leur inventaire reste valide au yeux du client et a la barbe de la console.

J'aimerais un coup de main pour créer un script de nettoyage savoir si vous auriez mieux a proposer que ceci:

Le script run un wapt-get list puis a l'aide d'une boucle je cherche les exception que j'aurais listée plus tot dans une var.
Si je trouve le paquet, un simple wapt-get forget xxxxxx puis un wapt-get install zzzzz avec le paquet remplacant.

Peut être ais-je rater un step dans le waptdeploy pour nettoyer post ou pre install. Ou peut être quriez vous une sorte de paquet déjà disponible pour un procéder similaire?

Merci d'avance :)

(je vais probablement avancer sur le système citer ci dessus et vous le partagerais une fois finis)

Re: Creation d'un paquet WAPT Cleaner

Publié : 15 oct. 2018 - 20:12
par dcardon
Bonsoir Renaud,
renaud.counhaye a écrit : 15 oct. 2018 - 12:08 J'ai effectuer une migration de serveur WAPT, des machines sur serveur "A" WAPT 1.3 vers serveur "X" WAPT 1.5 (qui as ensuite été update en 1.6)

Soucis de cette migration est que les machines ayant subis le changement via waptdeploy on ramener leur inventaire du 1.3 vers le 1.5 et certains noms de paquet on changer, d'autres paquet disparu.
Pourtant leur inventaire reste valide au yeux du client et a la barbe de la console.
Du point de vu du poste, celui-ci est bien à jour : il n'y a pas de paquet plus à jour que celui qui est déjà installé sur la machine. Donc ce n'est pas incorrect, même si ce n'est pas exactement ce que vous vouliez.
renaud.counhaye a écrit : 15 oct. 2018 - 12:08 J'aimerais un coup de main pour créer un script de nettoyage savoir si vous auriez mieux a proposer que ceci:
Si il n'y a pas trop de package impactés, vous pouvez juste taper le nom du paquet en question dans textbox de recherche ("search keyword"), par exemple xyz-firefox, et les machines qui ont le paquet en questions vont être listées. Note: attention, la recherche matche en substring, donc xyz-firefox en recherche retournera aussi les machines ayant xyz-firefox-esr).
  • Ensuite vous sélectionnez "supprimer des dépendances de paquets ou de groupes de paquets" pour supprimer la dépendances sur les paquets en question;
  • puis vous supprimer ou oublier le paquet en sélectionnant les machines concernées et, dans la liste de paquets sur la droite, faites bouton droit et "oublier des paquets"
Cordialement,

Denis

Re: Creation d'un paquet WAPT Cleaner

Publié : 19 oct. 2018 - 10:59
par renaud.counhaye
Bonjour Denis,

Malheureusement, il y'a une grande quantité de machine qui sont impactée par cet inventaire fantome.
Ce pourquoi je cherchais un moyen de l'automatiser vu l'impossibilité de clean l'inventaire d'une machine post migration de serveur de façon simple.

J'ai donc pondu ce code très simple :
Il est possible de forget un package uniquement connu du client puisqu'il n'est pas enregistré dans les packets assigné a la machine sur la console, donc pas de réinstallation.

Code : Tout sélectionner

# -----------------------------------------------------------------------
# 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()
PS : Il serais interressant de permettre a un paquet WAPT disposant d'une clef spécial de forcer un paquet a être désasigner de la machine sur lequel il s'execute.

Bonne journée,

Re: Creation d'un paquet WAPT Cleaner

Publié : 19 oct. 2018 - 13:57
par sfonteneau
Plus simple :

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

Code : Tout sélectionner

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)