I am trying to open a file on a share that is locked for writing by someone else; however, it would be rather useful to at least read old data out of that file... the file in question is: MySpreadsheet.xlsx
, and the directory has a Windows lock file in the same directory called ~MySpreadsheet.xlsx
...
I'm using this script...
from getpass import getpass
from StringIO import StringIO
from smb.SMBHandler import SMBHandler, SMBConnection
password = getpass('Windows password for mpenning: ')
conn = SMBConnection('mpenning', password, 'local-server-name', 'file-share-server-name',
'active-directory-name.local', use_ntlm_v2=True,
sign_options=SMBConnection.SIGN_WHEN_SUPPORTED, is_direct_tcp=True)
connected = conn.connect('file-share-server-name', 445)
if connected:
print "CONNECTED", conn
temp_fh = StringIO()
print conn.retrieveFile('SHARE_NAME', '/Directory1/Directory2/Directory3/MySpreadsheet.xlsx', temp_fh)
temp_fh.close()
I get the following error when I try to open that read-only file...
File "smb_test.py", line 15, in <module>
print conn.retrieveFile('SHARE_NAME', '/Directory1/Directory2/Directory3/MySpreadsheet.xlsx', temp_fh)
File "/opt/virtual_env/py27_default/lib/python2.7/site-packages/smb/SMBConnection.py", line 267, in retrieveFile
return self.retrieveFileFromOffset(service_name, path, file_obj, 0L, -1L, timeout)
File "/opt/virtual_env/py27_default/lib/python2.7/site-packages/smb/SMBConnection.py", line 299, in retrieveFileFromOffset
self._pollForNetBIOSPacket(timeout)
File "/opt/virtual_env/py27_default/lib/python2.7/site-packages/smb/SMBConnection.py", line 581, in _pollForNetBIOSPacket
self.feedData(data)
File "/opt/virtual_env/py27_default/lib/python2.7/site-packages/nmb/base.py", line 54, in feedData
self._processNMBSessionPacket(self.data_nmb)
File "/opt/virtual_env/py27_default/lib/python2.7/site-packages/nmb/base.py", line 75, in _processNMBSessionPacket
self.onNMBSessionMessage(packet.flags, packet.data)
File "/opt/virtual_env/py27_default/lib/python2.7/site-packages/smb/base.py", line 143, in onNMBSessionMessage
if self._updateState(self.smb_message):
File "/opt/virtual_env/py27_default/lib/python2.7/site-packages/smb/base.py", line 282, in _updateState_SMB2
req.callback(message, **req.kwargs)
File "/opt/virtual_env/py27_default/lib/python2.7/site-packages/smb/base.py", line 796, in createCB
errback(OperationFailure('Failed to list %s on %s: Unable to open file' % ( path, service_name ), messages_history))
File "/opt/virtual_env/py27_default/lib/python2.7/site-packages/smb/SMBConnection.py", line 293, in eb
raise failure
smb.smb_structs.OperationFailure: Failed to list \Directory1\Directory2\Directory3\MySpreadsheet.xlsx on IT_Group: Unable to open file