Example of pysmb

前端 未结 3 699
醉梦人生
醉梦人生 2021-02-13 23:57

Could you give me an example of using pysmb library to connect to some samba server? I\'ve read there\'s class smb.SMBConnection.SMBConnection(username, password, my_name, remot

相关标签:
3条回答
  • 2021-02-14 00:08

    For example you want to store a file via pysmb same as this:

    from smb.SMBConnection import SMBConnection
    
    file_obj = open('image.png', 'rb')
    
    connection = SMBConnection(username=username,
                               password=password,
                               remote_name=remote_name,  # It's net bios  name
                               domain=domain,
                               use_ntlm_v2=True)
    
    connection.connect(ip=host)  # The IP of file server
    
    connection.storeFile(service_name=service_name,  # It's the name of shared folder
                         path=path,
                         file_obj=file_obj)
    connection.close()
    
    
    
    0 讨论(0)
  • 2021-02-14 00:24

    The SMBConnection class will allow you to access the files on the remote Samba server in blocking mode.

    To retrieve the list of the files in a shared folder on the remote server,

    from smb.SMBConnection import SMBConnection
    conn = SMBConnection(userid, password, client_machine_name, remote_machine_name, use_ntlm_v2 = True)
    conn.connect(server_ip, 139)
    filelist = conn.listPath('shared_folder_name', '/')
    

    The returned filelist will be a list of SharedFile instances.

    More examples can be found in the tests/SMBConnectionTests folder in the pysmb source package.

    0 讨论(0)
  • 2021-02-14 00:24

    I have been using pysmb for network shares enumeration lately, and found that it is not so easy to find good / complete examples. I'd refer you to a small script that I wrote for enumerating smb shares with pysmb: https://github.com/n3if/scripts/tree/master/smb_enumerator

    For the sake of completeness, also, I post here the code snippet that accomplishes the connection and enumeration:

    from smb import SMBConnection
    
    try:
        conn = SMBConnection(username,password,'name',system_name,domain,use_ntlm_v2=True,
                             sign_options=SMBConnection.SIGN_WHEN_SUPPORTED,
                             is_direct_tcp=True) 
        connected = conn.connect(system_name,445)
    
        try:
            Response = conn.listShares(timeout=30)  # obtain a list of shares
            print('Shares on: ' + system_name)
    
            for i in range(len(Response)):  # iterate through the list of shares
                print("  Share[",i,"] =", Response[i].name)
    
                try:
                    # list the files on each share
                    Response2 = conn.listPath(Response[i].name,'/',timeout=30)
                    print('    Files on: ' + system_name + '/' + "  Share[",i,"] =",
                                           Response[i].name)
                    for i in range(len(Response2)):
                        print("    File[",i,"] =", Response2[i].filename)
                except:
                    print('### can not access the resource')
        except:
            print('### can not list shares')    
    except:
        print('### can not access the system')
    
    0 讨论(0)
提交回复
热议问题