Недавно я написал скрипт на python для выполнения некоторых рутинных операций с файлами и их обслуживания для папки на общем сетевом диске (для доступа к которой требуется аутентификация).
Когда я запустил скрипт на моей локальной машине, он работал и смог получить доступ к сетевому диску без проблем. Затем я поместил сценарий на удаленный компьютер, и Дженкинс запустил его. Jenkins давал мне ошибку «Отказано в доступе», потому что Jenkins был установлен как служба, запущенная локальной системной учетной записью, которая не имела доступа к общему диску.
Итак, после поиска решений я увидел, что могу использовать команду net use для получения доступа к сети с другими учетными данными. Я попытался написать сценарий powershell, который использовал net use с передачей моей информации для входа в систему для вызова сценария python.
Это не сработало.
Наконец, я попытался использовать команду net use в скрипте python, используя os.sys ('net use user / pass'), и это сработало!
Итак, мой вопрос: почему это работает, когда команда net use была помещена в скрипт python, а не в скрипт powershell, используемый для вызова Python?
Большая часть того, что я читал о «сетевом использовании» онлайн, описывает это как «подключение» к сетевому диску? Но мой компьютер уже знал, что диск существует, и где он был, просто не имел к нему доступа, пока я не передал имя пользователя и пароль с помощью команды. Какова область сетевой аутентификации из этой команды? Разве дочерние процессы не сохраняют ту же самую аутентификацию?