Недавно я написал скрипт на python для выполнения некоторых рутинных операций с файлами и их обслуживания для папки на общем сетевом диске (для доступа к которой требуется аутентификация).

Когда я запустил скрипт на своем локальном компьютере, он работал и смог без проблем получить доступ к сетевому диску. Затем я поместил сценарий на удаленную машину и попросил Дженкинса запустить его. Дженкинс выдавал мне ошибку «Отказано в доступе», потому что Дженкинс был установлен как служба, запущенная локальной системной учетной записью, которая не имела доступа к общему диску.

Итак, после поиска решений я увидел, что могу использовать команду net use для получения доступа к сети с другими учетными данными. Я попытался написать сценарий powershell, который использовал net use с передачей моей информации для входа в систему для вызова сценария python.

Это не сработало.

Наконец, я попытался использовать команду net use в скрипте python, используя os.sys(«net use user/pass»), и это сработало!

Итак, мой вопрос: почему это работает, когда команда net use была помещена в скрипт python, а не в скрипт powershell, используемый для вызова Python?

Большая часть того, что я читал о «сетевом использовании» онлайн, описывает это как «подключение» к сетевому диску? Но мой компьютер уже знал, что диск существует, и где он был, просто не имел к нему доступа, пока я не передал имя пользователя и пароль с помощью команды. Какова область сетевой аутентификации из этой команды? Разве дочерние процессы не сохраняют ту же аутентификацию?

0