status_client.py 1.8 KB

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