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,