Skip to content

Instantly share code, notes, and snippets.

@joselitosn
Created March 16, 2016 13:45
  • Star 18 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save joselitosn/e74dbc2812c6479d3678 to your computer and use it in GitHub Desktop.
Python SMB Example
from smb.SMBConnection import SMBConnection
userID = 'user'
password = 'password'
client_machine_name = 'localpcname'
server_name = 'servername'
server_ip = '0.0.0.0'
domain_name = 'domainname'
conn = SMBConnection(userID, password, client_machine_name, server_name, domain=domain_name, use_ntlm_v2=True,
is_direct_tcp=True)
conn.connect(server_ip, 445)
shares = conn.listShares()
for share in shares:
if not share.isSpecial and share.name not in ['NETLOGON', 'SYSVOL']:
sharedfiles = conn.listPath(share.name, '/')
for sharedfile in sharedfiles:
print(sharedfile.filename)
conn.close()
# with open('pysmb.py', 'rb') as file:
# conn.storeFile('remotefolder', 'pysmb.py', file)
@tklenke
Copy link

tklenke commented Feb 15, 2017

I banged my head against the wall trying to get this to run on Jessie x86 distro. Kept getting
ImportError: No module named SMBConnection
Finally figured out that replacing
from smb.SMBConnection import SMBConnection
with the following works.

from smb import *
from SMBConnection import *

@BSCowboy
Copy link

BSCowboy commented Nov 2, 2017

according to the docs, I think you could also use:
smb.SMBConnection import SMBConnection

@brucevanhorn2
Copy link

What's the deal with the commented out storeFile code at the end? That's the part I need, but when I uncomment and change it, I get an error stating that it can't connect to the resource, even the code that lists the shares demonstrates that it can connect.

@brucevanhorn2
Copy link

I figured it out. My mistake was probably common. The first param is the share name. I was trying to add the sub-folder, the destination, in that same string like foo/bar. I actually needed to put it in the destination file name. So to save to share foo in a folder called bar it would be

with open('/home/bruce/PycharmProjects/smb_test/venv/test-file.txt', 'rb') as file:
    conn.storeFile('foo', 'bar/test-file.txt', file)

@omidraha
Copy link

What's the package name of this 'smb' module?


>>> import smb
Tracebac
```k (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named smb
>>> 

@Wolf0fmusic
Copy link

from smb.SMBConnection import *
^
This will work after installing the whole pysmb packages. :)

@nstarke
Copy link

nstarke commented Oct 24, 2018

The package name under debian is python-smb

@Splint3r7
Copy link

The package name under debian is python-smb

@nstarke Thanks. saved my life <3

@blinkbink
Copy link

root@sfr:/tmp# pip3 install pysmb
Requirement already satisfied: pysmb in /usr/local/lib/python3.6/dist-packages
Requirement already satisfied: pyasn1 in /usr/lib/python3/dist-packages (from pysmb)
root@sfr:/tmp# python3
Python 3.6.8 (default, Oct 7 2019, 12:59:55)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

import smb
Traceback (most recent call last):
File "", line 1, in
File "/tmp/smb.py", line 2, in
from smb.SMBConnection import SMBConnection
ModuleNotFoundError: No module named 'smb.SMBConnection'; 'smb' is not a package

gos this error, why this happen ?

@osamahamad
Copy link

@blinkbink I have the same, did u manage to solve it ?

@Jack-I
Copy link

Jack-I commented Jan 25, 2021

@blinkbink I have the same, did u manage to solve it ?

Easy and stupid way (mine):

  1. Download manually from https://miketeo.net/blog/projects/pysmb
  2. Copy smb and nmb folders to your site-packages folder (usually C:\users\user\AppData\Local\Continuum\anaconda3\Lib\site-packages if using Anaconda)
  3. Enjoy from smb.SMBConnection import SMBConnection

@hadrian3689
Copy link

hadrian3689 commented Apr 29, 2021

To use "from smb.SMBConnection import SMBConnection" I was able to get it working with:
sudo apt install python3-smb

@Augustin-FL
Copy link

Fyi, for those having the same issue as me :

pysmb is conflicting with impacket (they both have a file named smbconnection.py). You need to remove one before using the other, and vice versa.

@yainoit
Copy link

yainoit commented May 5, 2023

I am getting timeout error
errorMessage": "timed out",
"errorType": "TimeoutError",
"requestId": "",
"stackTrace": [
" File "/var/lang/lib/python3.10/importlib/init.py", line 126, in import_module\n return _bootstrap._gcd_import(name[level:], package, level)\n",
" File "", line 1050, in _gcd_import\n",
" File "", line 1027, in _find_and_load\n",
" File "", line 1006, in _find_and_load_unlocked\n",
" File "", line 688, in _load_unlocked\n",
" File "", line 883, in exec_module\n",
" File "", line 241, in _call_with_frames_removed\n",
" File "/var/task/lambda_function.py", line 134, in \n lambda_handler("e","c")\n",
" File "/var/task/lambda_function.py", line 99, in lambda_handler\n connected = conn.connect(server_ip, 13)\n",
" File "/var/task/smb/SMBConnection.py", line 113, in connect\n self.sock.connect(( ip, port ))\n"
]
}

@yainoit
Copy link

yainoit commented May 8, 2023

I am getting timeout error. I am running a code from aws lambda.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment