store_file() leads to "TypeError: can't concat bytes to str" exception in smb\smb2_structs.py.
It looks that opening file_obj in binary mode ('rb') fixes the issue.
--- easypysmb.py (revision )
+++ easypysmb.py (revision )
@@ -120,7 +120,7 @@
assert dest_path, 'Destination path is unset'
share_name, dest_path = self.__guess_share_name(dest_path, share_name)
if type(file_obj) is str or type(file_obj) is str:
- file_obj = open(file_obj)
+ file_obj = open(file_obj, 'rb')
logger.info(
'Attempt to store {} on {}:{}'.format(
file_obj.name, share_name, dest_path
Full stack trace follows:
Traceback (most recent call last):
File "C:/test/smbcli2.py", line 15, in
z = e.store_file(file_obj='/tmp/body.txt', dest_path='body.txt')
File "C:\Local\Python36\lib\site-packages\easypysmb\easypysmb.py", line 134, in store_file
file_obj
File "C:\Local\Python36\lib\site-packages\smb\SMBConnection.py", line 316, in storeFile
return self.storeFileFromOffset(service_name, path, file_obj, 0, True, timeout)
File "C:\Local\Python36\lib\site-packages\smb\SMBConnection.py", line 347, in storeFileFromOffset
self._pollForNetBIOSPacket(timeout)
File "C:\Local\Python36\lib\site-packages\smb\SMBConnection.py", line 583, in _pollForNetBIOSPacket
self.feedData(data)
File "C:\Local\Python36\lib\site-packages\nmb\base.py", line 54, in feedData
self._processNMBSessionPacket(self.data_nmb)
File "C:\Local\Python36\lib\site-packages\nmb\base.py", line 75, in _processNMBSessionPacket
self.onNMBSessionMessage(packet.flags, packet.data)
File "C:\Local\Python36\lib\site-packages\smb\base.py", line 137, in onNMBSessionMessage
if self._updateState(self.smb_message):
File "C:\Local\Python36\lib\site-packages\smb\base.py", line 276, in _updateState_SMB2
req.callback(message, **req.kwargs)
File "C:\Local\Python36\lib\site-packages\smb\base.py", line 909, in createCB
sendWrite(create_message.tid, create_message.payload.fid, starting_offset)
File "C:\Local\Python36\lib\site-packages\smb\base.py", line 924, in sendWrite
self._sendSMBMessage(m)
File "C:\Local\Python36\lib\site-packages\smb\base.py", line 227, in _sendSMBMessage_SMB2
smb_message.raw_data = smb_message.encode()
File "C:\Local\Python36\lib\site-packages\smb\smb2_structs.py", line 79, in encode
self.payload.prepare(self)
File "C:\Local\Python36\lib\site-packages\smb\smb2_structs.py", line 466, in prepare
self.flags) + self.data
TypeError: can't concat bytes to str
store_file() leads to "TypeError: can't concat bytes to str" exception in smb\smb2_structs.py. It looks that opening file_obj in binary mode ('rb') fixes the issue.
Full stack trace follows:
Traceback (most recent call last): File "C:/test/smbcli2.py", line 15, in
z = e.store_file(file_obj='/tmp/body.txt', dest_path='body.txt')
File "C:\Local\Python36\lib\site-packages\easypysmb\easypysmb.py", line 134, in store_file
file_obj
File "C:\Local\Python36\lib\site-packages\smb\SMBConnection.py", line 316, in storeFile
return self.storeFileFromOffset(service_name, path, file_obj, 0, True, timeout)
File "C:\Local\Python36\lib\site-packages\smb\SMBConnection.py", line 347, in storeFileFromOffset
self._pollForNetBIOSPacket(timeout)
File "C:\Local\Python36\lib\site-packages\smb\SMBConnection.py", line 583, in _pollForNetBIOSPacket
self.feedData(data)
File "C:\Local\Python36\lib\site-packages\nmb\base.py", line 54, in feedData
self._processNMBSessionPacket(self.data_nmb)
File "C:\Local\Python36\lib\site-packages\nmb\base.py", line 75, in _processNMBSessionPacket
self.onNMBSessionMessage(packet.flags, packet.data)
File "C:\Local\Python36\lib\site-packages\smb\base.py", line 137, in onNMBSessionMessage
if self._updateState(self.smb_message):
File "C:\Local\Python36\lib\site-packages\smb\base.py", line 276, in _updateState_SMB2
req.callback(message, **req.kwargs)
File "C:\Local\Python36\lib\site-packages\smb\base.py", line 909, in createCB
sendWrite(create_message.tid, create_message.payload.fid, starting_offset)
File "C:\Local\Python36\lib\site-packages\smb\base.py", line 924, in sendWrite
self._sendSMBMessage(m)
File "C:\Local\Python36\lib\site-packages\smb\base.py", line 227, in _sendSMBMessage_SMB2
smb_message.raw_data = smb_message.encode()
File "C:\Local\Python36\lib\site-packages\smb\smb2_structs.py", line 79, in encode
self.payload.prepare(self)
File "C:\Local\Python36\lib\site-packages\smb\smb2_structs.py", line 466, in prepare
self.flags) + self.data
TypeError: can't concat bytes to str