miketeo / pysmb

pysmb is an experimental SMB/CIFS library written in Python. It implements the client-side SMB/CIFS protocol (SMB1 and SMB2) which allows your Python application to access and transfer files to/from SMB/CIFS shared folders like your Windows file sharing and Samba folders.
Other
340 stars 95 forks source link

Unable to open file in Ubuntu #140

Closed ylmzkaan closed 5 years ago

ylmzkaan commented 5 years ago

Similar issues like this have been discussed but I still can't solve this problem. I have bytes that I want to write to a NAS over samba. I write the bytes into a tempfile.TemporaryFile then I try to store it in the NAS via pysmb. But I get a Unable to open file error. This is how I setup SMBConnection and call storeFile().

self._conn = SMBConnection(self.userID, self.password, self.client_machine_name, self.server_name)
self._conn.connect(self.server_ip, 139)

with NamedTemporaryFile() as f:
        f.write(metaBin)
        f.write(binaries)
        f.seek(0)
        self._conn.storeFile(self.smpShareName, filename, f)

Filename is relative to the share.

Can you help me about the error I get below?

2019-07-27 14:20:03,514-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,514-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,514-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,514-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,514-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,514-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,514-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,515-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,515-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,515-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,515-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,515-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,515-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,515-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,515-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,515-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,515-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,515-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,515-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,515-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,515-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,515-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,516-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,516-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,516-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,516-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,516-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,516-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,516-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,516-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,516-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,516-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,516-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,516-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,516-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,517-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,517-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,517-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,517-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,517-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,517-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,517-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,517-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,517-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,517-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,517-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,517-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,517-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,517-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,517-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,518-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,518-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,518-DEBUG-Received SMB message "SMB_COM_OPEN_ANDX" (command:0x2D flags:0x88 flags2:0xC803 TID:1 UID:100) 2019-07-27 14:20:03,518-ERROR-Exception in the handler bound to 'evt.EVT_C_STORE' 2019-07-27 14:20:03,518-ERROR-Failed to store Data\BrainCT\Raw\EU0000689170\1.2.392.200036.9116.2.6.1.3268.2056360138.1561933062.987071.dcm on AI_Radyoloji: Unable to open file ==================== SMB Message 0 ==================== SMB Header:

Command: 0x2D (SMB_COM_OPEN_ANDX) Status: NTSTATUS=0x00000000 Flags: 0x18 Flags2: 0xC841 PID: 15205 UID: 100 MID: 57 TID: 1 Security: 0x0000000000000000 Parameters: 30 bytes b'ff000000000041000600000063333c5d1200000000000000000000000000' Data: 189 bytes b'0044006100740061005c0042007200610069006e00430054005c005200610077005c004500550030003000300030003600380039003100370030005c0031002e0032002e003300390032002e003200300030003000330036002e0039003100310036002e0032002e0036002e0031002e0033003200360038002e0032003000350036003300360030003100330038002e0031003500360031003900330033003000360032002e003900380037003000370031002e00640063006d000000' SMB Data Packet (hex):

b'ff534d422d000000001841c80000000000000000000000000100653b640039000fff000000000041000600000063333c5d1200000000000000000000000000bd000044006100740061005c0042007200610069006e00430054005c005200610077005c004500550030003000300030003600380039003100370030005c0031002e0032002e003300390032002e003200300030003000330036002e0039003100310036002e0032002e0036002e0031002e0033003200360038002e0032003000350036003300360030003100330038002e0031003500360031003900330033003000360032002e003900380037003000370031002e00640063006d000000' ==================== SMB Message 1 ==================== SMB Header:

Command: 0x2D (SMB_COM_OPEN_ANDX) Status: NTSTATUS=0xC000003A Flags: 0x88 Flags2: 0xC803 PID: 15205 UID: 100 MID: 57 TID: 1 Security: 0x0000000000000000 Parameters: 0 bytes b'' Data: 0 bytes b'' SMB Data Packet (hex):

b'ff534d422d3a0000c08803c80000000000000000000000000100653b64003900000000' Traceback (most recent call last): File "/home/egeyapayzeka/EGE-AI/BrainCTAnalysis-Ege/venv/lib/python3.6/site-packages/pynetdicom/service_class.py", line 1440, in SCP {'request' : req, 'context' : context.as_tuple} File "/home/egeyapayzeka/EGE-AI/BrainCTAnalysis-Ege/venv/lib/python3.6/site-packages/pynetdicom/events.py", line 163, in trigger return handlers(evt) File "/home/egeyapayzeka/EGE-AI/BrainCTAnalysis-Ege/Lib/DicomOps/EventHandler.py", line 76, in handle_store self._saveMethod(ds, filename) File "/home/egeyapayzeka/EGE-AI/BrainCTAnalysis-Ege/Lib/DicomOps/EventHandler.py", line 89, in _saveToNAS self._conn.storeFile(self.smpShareName, filename, f) File "/home/egeyapayzeka/EGE-AI/BrainCTAnalysis-Ege/venv/lib/python3.6/site-packages/pysmb-2.0.0-py3.6.egg/smb/SMBConnection.py", line 373, in storeFile return self.storeFileFromOffset(service_name, path, file_obj, 0, True, timeout) File "/home/egeyapayzeka/EGE-AI/BrainCTAnalysis-Ege/venv/lib/python3.6/site-packages/pysmb-2.0.0-py3.6.egg/smb/SMBConnection.py", line 404, in storeFileFromOffset self._pollForNetBIOSPacket(timeout) File "/home/egeyapayzeka/EGE-AI/BrainCTAnalysis-Ege/venv/lib/python3.6/site-packages/pysmb-2.0.0-py3.6.egg/smb/SMBConnection.py", line 649, in _pollForNetBIOSPacket self.feedData(data) File "/home/egeyapayzeka/EGE-AI/BrainCTAnalysis-Ege/venv/lib/python3.6/site-packages/pysmb-2.0.0-py3.6.egg/nmb/base.py", line 54, in feedData self._processNMBSessionPacket(self.data_nmb) File "/home/egeyapayzeka/EGE-AI/BrainCTAnalysis-Ege/venv/lib/python3.6/site-packages/pysmb-2.0.0-py3.6.egg/nmb/base.py", line 75, in _processNMBSessionPacket self.onNMBSessionMessage(packet.flags, packet.data) File "/home/egeyapayzeka/EGE-AI/BrainCTAnalysis-Ege/venv/lib/python3.6/site-packages/pysmb-2.0.0-py3.6.egg/smb/base.py", line 176, in onNMBSessionMessage if self._updateState(self.smb_message): File "/home/egeyapayzeka/EGE-AI/BrainCTAnalysis-Ege/venv/lib/python3.6/site-packages/pysmb-2.0.0-py3.6.egg/smb/base.py", line 1856, in _updateState_SMB1 req.callback(message, **req.kwargs) File "/home/egeyapayzeka/EGE-AI/BrainCTAnalysis-Ege/venv/lib/python3.6/site-packages/pysmb-2.0.0-py3.6.egg/smb/base.py", line 2512, in openCB errback(OperationFailure('Failed to store %s on %s: Unable to open file' % ( path, service_name ), messages_history)) File "/home/egeyapayzeka/EGE-AI/BrainCTAnalysis-Ege/venv/lib/python3.6/site-packages/pysmb-2.0.0-py3.6.egg/smb/SMBConnection.py", line 398, in eb raise failure smb.smb_structs.OperationFailure: Failed to store Data\BrainCT\Raw\EU0000689170\1.2.392.200036.9116.2.6.1.3268.2056360138.1561933062.987071.dcm on AI_Radyoloji: Unable to open file

miketeo commented 5 years ago

NamedTemporaryFile() will open the file for write, so it cannot be read from by pysmb. You need to close f and re-open the file for reading.

self._conn = SMBConnection(self.userID, self.password, self.client_machine_name, self.server_name)
self._conn.connect(self.server_ip, 139)

f = NamedTemporaryFile()
f.write(metaBin)
f.write(binaries)
f.close()

with open(f.name, 'rb') as fh:
        self._conn.storeFile(self.smpShareName, filename, fh)