import subprocess from pathlib import Path import zipfile from datetime import datetime from path_info import PathInfo import config from ftp_client import FtpClient def run_command(cmd, logfile): with open(logfile, 'wb') as stream: p = subprocess.Popen(cmd, stdout=stream, stderr=stream) p.wait() def task_scheduler(logfile): run_command('schtasks /query /v /fo CSV', logfile) def task_manager(logfile): run_command('tasklist /fo CSV', logfile) def shared_files(logfile): run_command('openfiles /Query /fo CSV', logfile) def zip_to_file(base_dir, zip_file): filter = ['config/*', 'config/info/*', 'logs/*', '*.ini', '*.bat'] with zipfile.ZipFile(zip_file, 'w', compression=zipfile.ZIP_DEFLATED, compresslevel=9) as zip: for f in filter: for e in Path(base_dir).glob(f): if '.zip' not in e.name: zip.write(e, e.relative_to(base_dir)) if __name__ == '__main__': cfg = config.Config() # Aufgabenplanung aktueller Stand task_scheduler(cfg.tasks_dir + '\\logs\\schtasks.csv') # Laufende Prozesse task_manager(cfg.tasks_dir + '\\logs\\tasklist.csv') # aktuelle Freigabe-Sessions shared_files(cfg.tasks_dir + '\\logs\\tasklist.csv') # Liste aller Dateien im GAPS-Verzeichnis # filename;size;cdate;mdate ti = PathInfo() ti.check_dir(cfg.portal_dir) ti.write_logfile(cfg.tasks_dir + '\\logs\\path_info.csv') # Logdateien aus Tasks/logs und System/prot timestamp = datetime.now().strftime('%Y-%m-%d_%H%M%S') zip_file = f"{cfg.tasks_dir}\\logs\\{cfg.kunde_safe}_{timestamp}.zip" zip_to_file(cfg.tasks_dir, zip_file) # Upload auf FTP FtpClient().upload(zip_file)