Creation d'un paquet WAPT Cleaner

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
renaud.counhaye
Messages : 31
Inscription : 13 déc. 2017 - 11:45

15 oct. 2018 - 12:08

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)
Renaud Counhaye
Technicien système réseaux
Central Functions Division
Ymagis Group
Image
Avatar de l’utilisateur
dcardon
Expert WAPT
Messages : 1373
Inscription : 18 juin 2014 - 09:58
Localisation : Saint Sébastien sur Loire
Contact :

15 oct. 2018 - 20:12

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
Denis Cardon - Tranquil IT
Communiquez autour de vous sur WAPT! Envoyez nous vos url de blog et d'articles dans la catégorie votre avis du forum, nous les mettrons en avant sur le site WAPT
renaud.counhaye
Messages : 31
Inscription : 13 déc. 2017 - 11:45

19 oct. 2018 - 10:59

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,
Renaud Counhaye
Technicien système réseaux
Central Functions Division
Ymagis Group
Image
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1783
Inscription : 10 juil. 2014 - 23:52
Contact :

19 oct. 2018 - 13:57

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)
Verrouillé