доступ к файлам через python с использованием служебной учетной записи - PullRequest
0 голосов
/ 30 мая 2018

Я играю с Windows Server 2012 R2.У меня есть несколько файлов на сервере.У меня есть отдельная учетная запись службы, которая имеет доступ для чтения файлов.Я хочу использовать python для доступа к файлам по общему сетевому ресурсу (любые другие предложения приветствуются), но только через служебную учетную запись.

PS: я не могу использовать RDP.

1 Ответ

0 голосов
/ 30 мая 2018

Базовые WINAPI для этой задачи являются частью [MS.Docs]: функция WNetAddConnection2W * семейство .

[GitHub]: mhammond/ pywin32 - Python для Windows (pywin32) Расширения Оболочка [ActiveState]: Модуль win32wnet (это не официальный документ (я не смог найти какой-либо на данный момент) - я не знаюкак долго URL будет действительным, но это лучшее, что я смог найти).

Я подготовил тривиальный пример.

code.py:

#!/usr/bin/env python3

import sys
import os
import pywintypes
import win32wnet


CONNECT_INTERACTIVE = 0x00000008

HOST_NAME = "192.168.1.3"
SHARE_NAME = "Work"
SHARE_FULL_NAME = os.path.sep * 2 + os.path.sep.join((HOST_NAME, SHARE_NAME))
SHARE_USER = "cfati"
SHARE_PWD = "********"


def main():
    net_resource = win32wnet.NETRESOURCE()
    net_resource.lpRemoteName = SHARE_FULL_NAME
    flags = 0
    #flags |= CONNECT_INTERACTIVE
    print("Trying to create connection to: {:s}".format(SHARE_FULL_NAME))
    try:
        win32wnet.WNetAddConnection2(net_resource, SHARE_PWD, SHARE_USER, flags)
    except pywintypes.error as e:
        print(e)
    else:
        print("Success!")


if __name__ == "__main__":
    print("Python {:s} on {:s}\n".format(sys.version, sys.platform))
    main()

Примечания :

  • Пароль запутан (очевидно)
  • Это самый простойфункциональность (эквивалент вашей команды), однако функция может делать гораздо больше:

    • Одна вещь, которую я хочу отметить.Если вы:

      • введите недопустимые учетные данные и
      • удалите строку flags |= CONNECT_INTERACTIVE line

      Откроется диалоговое окно учетных данных

Выход :

(py35x64_test) e:\Work\Dev\StackOverflow\q050602112>net use
New connections will be remembered.

There are no entries in the list.


(py35x64_test) e:\Work\Dev\StackOverflow\q050602112>"e:\Work\Dev\VEnvs\py35x64_test\Scripts\python.exe" code.py
Python 3.5.4 (v3.5.4:3f56838, Aug  8 2017, 02:17:05) [MSC v.1900 64 bit (AMD64)] on win32

Trying to create connection to: \\192.168.1.3\Work
Success!

(py35x64_test) e:\Work\Dev\StackOverflow\q050602112>net use
New connections will be remembered.


Status       Local     Remote                    Network

-------------------------------------------------------------------------------
OK                     \\192.168.1.3\Work        Microsoft Windows Network
The command completed successfully.


(py35x64_test) e:\Work\Dev\StackOverflow\q050602112>net use * /delete /y
You have these remote connections:

                    \\192.168.1.3\Work
Continuing will cancel the connections.

The command completed successfully.


(py35x64_test) e:\Work\Dev\StackOverflow\q050602112>net use
New connections will be remembered.

There are no entries in the list.
...