pysmb скопировать файл из Ubuntu в общую сетевую папку Windows - PullRequest
0 голосов
/ 24 июня 2019

Из Ubuntu я могу использовать pysmb для подключения к общему сетевому ресурсу Windows, а затем перечислить все доступные общие ресурсы и список всех файлов и папок в корневом каталоге этого общего ресурса, но ничего дальше в дереве.Мне нужно получить доступ к папке 5 уровней папок в общем пути, чтобы скопировать файл в это расположение, и я не могу получить доступ к корневому уровню общего файлового ресурса.

Я пытался использовать прямую и обратную косые черты (одиночныеи дважды) между путями и попытался включить и исключить косые черты в любом случае.Я пробовал только 1 уровень и каждый промежуточный.

from smb.SMBConnection import SMBConnection

userid = 'myid'
password = 'mypassword'
client = 'clientMachine'
remote = 'remoteMachine'
server_ip = '5.5.5.5'

conn = SMBConnection(userid, password, client, remote, domain='MYDOM',use_ntlmv2 = True)
assert conn.connect(server_ip, 139)
sharelist = conn.listShares()
for s in sharelist:
    print(s.name)
filelist = conn.listPath('Shared','/')
for f in filelist:
    print(f.filename)

conn.close()

Если я включаю любой другой путь в вызов listPath, отличный от '/', я получаю, что путь не найден, даже если путиЯ пытаюсь перечислить в заявлении печати:

Traceback (most recent call last):
  File "testsmb.py", line 14, in <module>
    filelist = conn.listPath('Shared', '/Corp/')
  File "/usr/local/lib/python2.7/dist-packages/smb/SMBConnection.py", line 202, in listPath
    self._pollForNetBIOSPacket(timeout)
  File "/usr/local/lib/python2.7/dist-packages/smb/SMBConnection.py", line 630, in _pollForNetBIOSPacket
    self.feedData(data)
  File "/usr/local/lib/python2.7/dist-packages/nmb/base.py", line 54, in feedData
    self._processNMBSessionPacket(self.data_nmb)
  File "/usr/local/lib/python2.7/dist-packages/nmb/base.py", line 75, in _processNMBSessionPacket
    self.onNMBSessionMessage(packet.flags, packet.data)
  File "/usr/local/lib/python2.7/dist-packages/smb/base.py", line 145, in onNMBSessionMessage
    if self._updateState(self.smb_message):
  File "/usr/local/lib/python2.7/dist-packages/smb/base.py", line 339, in _updateState_SMB2
    req.callback(message, **req.kwargs)
  File "/usr/local/lib/python2.7/dist-packages/smb/base.py", line 638, in createCB
    errback(OperationFailure('Failed to list %s on %s: Unable to open directory' % ( path, service_name ), messages_history))
  File "/usr/local/lib/python2.7/dist-packages/smb/SMBConnection.py", line 196, in eb
    raise failure
smb.smb_structs.OperationFailure: Failed to list Corp on Shared: Unable to open directory

Мне нужно попасть в акцию, которая вложена здесь:

//remotemachine/Shared/Corp/Futher/Futher with Space/Yet another Space/Test

Я вижу все акции, я могу дажесм. файлы и папки на каждом корневом уровне общих ресурсов, но не дальше. У меня есть разрешения на всех уровнях, что мне не хватает?

...