status_client.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import os
  2. import subprocess
  3. from pathlib import Path
  4. import zipfile
  5. from datetime import datetime
  6. from path_info import PathInfo
  7. import config
  8. from ftp_client import FtpClient
  9. def run_command(cmd, logfile):
  10. with open(logfile, 'wb') as stream:
  11. p = subprocess.Popen(cmd, stdout=stream, stderr=stream)
  12. p.wait()
  13. def task_scheduler(logfile):
  14. run_command('schtasks /query /v /fo CSV', logfile)
  15. def task_manager(logfile):
  16. run_command('tasklist /fo CSV', logfile)
  17. def shared_files(logfile):
  18. run_command('openfiles /Query /fo CSV', logfile)
  19. def model_datasources(cfg, model_file: Path, logfile):
  20. cmd = f'"{cfg.cognos7.program_dir}\\runmac32.exe" "{cfg.tools_dir}\\VBS\\list-datasources-c11.mac" "{model_file.parent}","{model_file.name}","{logfile}"'
  21. p = subprocess.Popen(cmd)
  22. p.wait()
  23. def datasources_all_models(cfg: config.Config):
  24. os.makedirs(cfg.tasks_dir + '\\config\\models', exist_ok=True)
  25. for model_file in Path(cfg.system_dir + '\\Models').glob('*.pyj'):
  26. model_datasources(cfg, model_file, cfg.tasks_dir + '\\config\\models\\' + model_file.name + '.log')
  27. def zip_to_file(base_dir, zip_file):
  28. filter = ['config/*', 'config/info/*', 'config/models/*', 'logs/*', '*.ini', '*.bat']
  29. with zipfile.ZipFile(zip_file, 'w', compression=zipfile.ZIP_DEFLATED, compresslevel=9) as zip:
  30. for f in filter:
  31. for e in Path(base_dir).glob(f):
  32. if '.zip' not in e.name:
  33. zip.write(e, e.relative_to(base_dir))
  34. if __name__ == '__main__':
  35. cfg = config.Config()
  36. # Aufgabenplanung aktueller Stand
  37. task_scheduler(cfg.tasks_dir + '\\logs\\schtasks.csv')
  38. # Laufende Prozesse
  39. task_manager(cfg.tasks_dir + '\\logs\\tasklist.csv')
  40. # aktuelle Freigabe-Sessions
  41. shared_files(cfg.tasks_dir + '\\logs\\tasklist.csv')
  42. datasources_all_models(cfg)
  43. # Liste aller Dateien im GAPS-Verzeichnis
  44. # filename;size;cdate;mdate
  45. ti = PathInfo()
  46. ti.check_dir(cfg.portal_dir)
  47. ti.write_logfile(cfg.tasks_dir + '\\logs\\path_info.csv')
  48. # Logdateien aus Tasks/logs und System/prot
  49. timestamp = datetime.now().strftime('%Y-%m-%d_%H%M%S')
  50. zip_file = f"{cfg.tasks_dir}\\logs\\{cfg.kunde_safe}_{timestamp}.zip"
  51. zip_to_file(cfg.tasks_dir, zip_file)
  52. # Upload auf FTP
  53. FtpClient().upload(zip_file)