From 451fa584b588126749425d68aac58a6499819290 Mon Sep 17 00:00:00 2001 From: Natalia Serrano Date: Wed, 29 Jan 2025 18:33:36 +0100 Subject: [PATCH] refs #1402 add listSoftwareInfo.py --- client/shared/scripts/listSoftwareInfo.py | 56 +++++++++++------------ 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/client/shared/scripts/listSoftwareInfo.py b/client/shared/scripts/listSoftwareInfo.py index 84f94ae..1c2756e 100755 --- a/client/shared/scripts/listSoftwareInfo.py +++ b/client/shared/scripts/listSoftwareInfo.py @@ -1,41 +1,39 @@ +#!/usr/bin/python3 +# Scirpt de ejemplo para almacenear en fichero temporal el listado de software. +# Nota: se usa como base para el programa de recogida de listado de software de OpenGnsys Admin. +# Formato: listSoftwareInfo [-r] ndisk npart +# -r listado reducido (sin parches de Windows) + import os import sys -sys.path.append('/opt/opengnsys/lib/engine/bin') +import re +import argparse +import ogGlobals import SystemLib import InventoryLib import NetLib -import ogGlobals -PROG = os.path.basename(__file__) -REDUCED = "no" +prog = os.path.basename (sys.argv[0]) -if len(sys.argv) > 1 and sys.argv[1] == "-r": - REDUCED = "yes" - sys.argv.pop(1) +def main (disk, par, reduced): + ip = NetLib.ogGetIpAddress() + softfile = f'{ogGlobals.OGLOG}/soft-{ip}-{disk}-{par}' + software_list = InventoryLib.ogListSoftware (disk, par) -if len(sys.argv) != 3: - SystemLib.ogRaiseError("session", ogGlobals.OG_ERR_FORMAT, f"{ogGlobals.MSG_FORMAT}: {PROG} ndisco nparticion") - sys.exit(1) + if reduced: + software_list = [line for line in software_list if not re.search (r'(KB[0-9]{6})', line)] -SOFTFILE = f"soft-{NetLib.ogGetIpAddress()}-{sys.argv[1]}-{sys.argv[2]}" -softfile_path = os.path.join(ogGlobals.OGLOG, SOFTFILE) + with open (softfile, 'w') as f: + for line in software_list: + f.write (f'{line}\n') -try: - software_list = InventoryLib.ogListSoftware(int(sys.argv[1]), int(sys.argv[2])) + print (softfile) - if REDUCED == "no": - with open(softfile_path, "w") as f: - for line in software_list: - f.write(f"{line}\n") - else: - filtered_list = [line for line in software_list if "(KB" not in line] - with open(softfile_path, "w") as f: - for line in filtered_list: - f.write(f"{line}\n") - - print(softfile_path) - -except Exception as e: - SystemLib.ogRaiseError("session", ogGlobals.OG_ERR_FORMAT, f"Error al generar el listado de software: {e}") - sys.exit(1) \ No newline at end of file +if __name__ == '__main__': + parser = argparse.ArgumentParser (add_help=False) + parser.add_argument ('-r', '--reduced', action='store_true', default=False) + parser.add_argument ('disk') + parser.add_argument ('par') + args = parser.parse_args() + main (args.disk, args.par, args.reduced)