доступ к файлу python от имени конкретного пользователя

#python #windows #backup #archive

#питон #Windows #резервная копия #Архив

Вопрос:

Скрипт должен архивировать файлы с некоторых компьютеров. Файлы находятся на разных компьютерах, подключенных к сети. Компьютер, на котором выполняется скрипт, должен получить доступ к каждой отдельной станции, заархивировать некоторые файлы, сохранить их на сервере и удалить предыдущую резервную копию. Все машины работают под управлением Windows 10. И у каждой машины разные учетные записи. Пример: машина 1 пользователь: пропуск администратора: администратор машина 2 пользователь: пропуск администратора: администратор

Любая идея, как я могу получить доступ к какому-либо компьютеру от имени конкретного пользователя. (atm Я открываю каждый путь на исполнительном компьютере, в Windows регистрируюсь как какой-то пользователь и использую «запомнить учетные данные», а затем сценарий работает.

Код:

 def main_backup_engine(MACHINE_ID,OBJECT_TO_BACKUP,BACKUP_DIRECTORY):  MAX_BACKUP_AMOUNT = 1 # The maximum amount of backups to have in BACKUP_DIRECTORY  object_to_backup_path = Path(OBJECT_TO_BACKUP)  backup_directory_path = Path(BACKUP_DIRECTORY)  assert object_to_backup_path.exists() # Validate the object we are about to backup exists before we continue   # Validate the backup directory exists and create if required  backup_directory_path.mkdir(parents=True, exist_ok=True)   # Get the amount of past backup zips in the backup directory already  existing_backups = [  x for x in backup_directory_path.iterdir()  if x.is_file() and x.suffix == '.zip' and x.name.startswith('backup-' MACHINE_ID)  ]   # Enforce max backups and delete oldest if there will be too many after the new backup  oldest_to_newest_backup_by_name = list(sorted(existing_backups, key=lambda f: f.name))  while len(oldest_to_newest_backup_by_name) gt;= MAX_BACKUP_AMOUNT: # gt;= because we will have another soon  backup_to_delete = oldest_to_newest_backup_by_name.pop(0)  backup_to_delete.unlink()   # Create zip file (for both file and folder options)  backup_file_name = f'backup-{MACHINE_ID}-{datetime.now().strftime("%Y-%m-%d_%H-%M-%S")}-{object_to_backup_path.name}.zip'  zip_file = zipfile.ZipFile(str(backup_directory_path / backup_file_name), mode='w')  if object_to_backup_path.is_file():  # If the object to write is a file, write the file  zip_file.write(  object_to_backup_path.absolute(),  arcname=object_to_backup_path.name,  compress_type=zipfile.ZIP_DEFLATED  )  elif object_to_backup_path.is_dir():  # If the object to write is a directory, write all the files  for file in object_to_backup_path.glob('**/*'):  if file.is_file():  zip_file.write(  file.absolute(),  arcname=str(file.relative_to(object_to_backup_path)),  compress_type=zipfile.ZIP_DEFLATED  )  # Close the created zip file  zip_file.close()   try:  main_backup_engine(MACHINE_ID='PC Name', OBJECT_TO_BACKUP='IP Address',  BACKUP_DIRECTORY='Backup DIR') except:  print("Targeted Machine is offline")