omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    Welcome!

    This is the community forum for my apps Pythonista and Editorial.

    For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.


    Python SMB Connection

    Pythonista
    3
    85
    24339
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • DavinE
      DavinE @cvp last edited by

      @cvp said:

      @DavinE strange, I'll check, my smb connection works

      Thanks for your Work @cvp

      1 Reply Last reply Reply Quote 0
      • cvp
        cvp @DavinE last edited by cvp

        @DavinE could you try, with your own user, pwd, server

        from SMB_client import SMB_client
        import keychain
        
        server_ftp = 'VOO-USB'
        user = 'voo'
        # get password from keychain
        pwd = keychain.get_password(server_ftp,user)
        my_smb = SMB_client(username=user,password=pwd, smb_name='VOO-USB', print_errors=False)
        my_smb.connect()
        print(my_smb.getRemoteDir('', '*'))
        
        DavinE 1 Reply Last reply Reply Quote 0
        • cvp
          cvp last edited by

          smb_files = my_smb.getRemoteDir('', '*')
          for smb_file in smb_files:
          	smb_filename = smb_file.filename
          	print(smb_file.filename)
          
          1 Reply Last reply Reply Quote 0
          • DavinE
            DavinE @cvp last edited by

            @cvp said:

            @DavinE could you try, with your own user, pwd, server

            from SMB_client import SMB_client
            import keychain
            
            server_ftp = 'VOO-USB'
            user = 'voo'
            # get password from keychain
            pwd = keychain.get_password(server_ftp,user)
            my_smb = SMB_client(username=user,password=pwd, smb_name='VOO-USB', print_errors=False)
            my_smb.connect()
            print(my_smb.getRemoteDir('', '*'))
            

            i get None

            but is it correct that i set my pass in server_ftp

            cvp 3 Replies Last reply Reply Quote 0
            • cvp
              cvp @DavinE last edited by

              @DavinE said:

              but is it correct that i set my pass in server_ftp

              Forget my keychain process. In all my scripts, I store my passwords in keychain.
              Use your username='xxx',password='xxx',smb_name='xxx'

              1 Reply Last reply Reply Quote 0
              • cvp
                cvp @DavinE last edited by cvp

                @DavinE and put your ip as server (my server has an ip but also a name)

                1 Reply Last reply Reply Quote 0
                • DavinE
                  DavinE last edited by

                  @cvp
                  sry.... i'm confused....

                  smb_name = "" # That is my Folder share name or ??
                  and where i need to put my Server ip ?

                  i have this:

                  my_smb = SMB_client(username=user,password=pwd, smb_name='home', print_errors=False)
                  
                  cvp 1 Reply Last reply Reply Quote 0
                  • cvp
                    cvp @DavinE last edited by

                    @DavinE this should be ok if you know the ip but not the smb name

                    ip = ....
                    my_smb = SMB_client()
                    smb_name = my_smb.getBIOSName(ip)
                    print(smb_name)
                    
                    my_smb = SMB_client(username=user,password=pwd, smb_name=smb_name, print_errors=False)
                    my_smb.connect()
                    
                    smb_files = my_smb.getRemoteDir('', '*')
                    for smb_file in smb_files:
                    	smb_filename = smb_file.filename
                    	print(smb_file.filename)
                    
                    DavinE 1 Reply Last reply Reply Quote 0
                    • cvp
                      cvp @DavinE last edited by

                      @DavinE said:

                      sry.... i'm confused..

                      I'm too, forget all except my just previous post

                      1 Reply Last reply Reply Quote 0
                      • DavinE
                        DavinE @cvp last edited by

                        @cvp said:

                        @DavinE this should be ok if you know the ip but not the smb name

                        print(smb_name)
                        

                        This is: ELEKTROTECHNIK
                        i think that's correct!

                        smb_files = my_smb.getRemoteDir('', '*')
                        print(smb_files)
                        

                        Here i get None

                        cvp 1 Reply Last reply Reply Quote 0
                        • cvp
                          cvp @DavinE last edited by

                          @DavinE said:

                          Here i get None

                          I you used my last post, that would say the ip is not correct.
                          The first my_smb is used to get the smb_name from the ip and the second uses the smb_name.

                          I print the smb_name, do you see it?

                          1 Reply Last reply Reply Quote 0
                          • cvp
                            cvp last edited by cvp

                            Now, this should work if you know the ip

                            from SMB_client import SMB_client
                            
                            ip = 'xxx.xxx.xxx.xxx'
                            user = 'xxxxxx'
                            pwd = 'xxxxx'
                            my_smb = SMB_client()
                            smb_name = my_smb.getBIOSName(ip)
                            print('smb_name=',smb_name)
                            my_smb = SMB_client(username=user,password=pwd, smb_name=smb_name, print_errors=False)
                            my_smb.connect()
                            smb_files = my_smb.getRemoteDir('', '*')
                            for smb_file in smb_files:
                            	smb_filename = smb_file.filename
                            	print(smb_file.filename)
                            
                            DavinE 1 Reply Last reply Reply Quote 0
                            • DavinE
                              DavinE @cvp last edited by

                              @cvp said:

                              Now, this should work if you know the ip

                              from SMB_client import SMB_client
                              
                              ip = 'xxx.xxx.xxx.xxx'
                              user = 'xxxxxx'
                              pwd = 'xxxxx'
                              my_smb = SMB_client()
                              smb_name = my_smb.getBIOSName(ip)
                              print('smb_name=',smb_name)
                              my_smb = SMB_client(username=user,password=pwd, smb_name=smb_name, print_errors=False)
                              my_smb.connect()
                              smb_files = my_smb.getRemoteDir('', '*')
                              for smb_file in smb_files:
                              	smb_filename = smb_file.filename
                              	print(smb_file.filename)
                              

                              so i tried it with my Raspberry Pi2....
                              here is my output:

                              pi@RaspberryPi2:~/TEST/smb $ python smb_de.py 
                              ('smb_name=', 'ELEKTROTECHNIK')
                              .
                              ..
                              Drive
                              

                              on my iPad pro 12.9" i get only:

                              smb_name=, ELEKTROTECHNIK
                              

                              with the same user and pwd....
                              this is a iPad problem or ?

                              cvp 2 Replies Last reply Reply Quote 0
                              • cvp
                                cvp @DavinE last edited by cvp

                                @cvp said:

                                my_smb = SMB_client()
                                smb_name = my_smb.getBIOSName(ip)
                                print('smb_name=',smb_name)

                                These lines do not use user nor pwd, it is only to get the smb_name that you need to use in tHe second. Note that if you know this smb_name, the ip is not necessary

                                my_smb = SMB_client(username=user,password=pwd, smb_name=smb_name, print_errors=False)
                                my_smb.connect()
                                smb_files = my_smb.getRemoteDir('', '*')
                                for smb_file in smb_files:
                                	smb_filename = smb_file.filename
                                	print(smb_file.filename)
                                
                                1 Reply Last reply Reply Quote 0
                                • cvp
                                  cvp @DavinE last edited by

                                  @DavinE said:

                                  pi@RaspberryPi2:~/TEST/smb $ python smb_de.py

                                  This line is printed by the smb client, and it is not the same on iPad, it does not print anything, it is normal.

                                  But is the connection ok?

                                  1 Reply Last reply Reply Quote 0
                                  • DavinE
                                    DavinE last edited by DavinE

                                    @cvp ,

                                    this is my test code for my connection:

                                    import smb, socket
                                    from smb.SMBConnection import SMBConnection
                                    from nmb.NetBIOS import NetBIOS
                                    
                                    netbios = NetBIOS()
                                    
                                    user = 'xxx'
                                    pwd = 'xxx'
                                    
                                    share_name          = "ELEKTROTECHNIK"
                                    user_name           = user
                                    password            = pwd
                                    server_IP           = "xxx.xxx.178.251"
                                    local_machine_name  = socket.gethostname()
                                    server_machine_name = netbios.queryIPForName(server_IP)
                                    
                                    print(server_machine_name[0])
                                    
                                    # create and establish connection
                                    conn = SMBConnection(user_name, password, local_machine_name, server_machine_name[0], domain="WORKGROUP", use_ntlm_v2=True)
                                    # 139
                                    # 445
                                    print(conn.connect(server_IP, 139))
                                    

                                    on my iPad i get here False

                                    on my Raspi2 i get True.....

                                    or need i to "translate" my Pwd on my iPad in Base64 ?

                                    cvp 2 Replies Last reply Reply Quote 0
                                    • cvp
                                      cvp @DavinE last edited by

                                      @DavinE said:

                                      or need i to "translate" my Pwd on my iPad in Base24 ?

                                      No.

                                      Did you retry with the other port? 445

                                      1 Reply Last reply Reply Quote 0
                                      • DavinE
                                        DavinE last edited by

                                        @cvp
                                        yes, its the same False

                                        1 Reply Last reply Reply Quote 0
                                        • cvp
                                          cvp @DavinE last edited by cvp

                                          @DavinE you cold also remove ,use_ntlm_v2 = True) in the source code of SmB_client.py

                                          Just to check

                                          1 Reply Last reply Reply Quote 0
                                          • DavinE
                                            DavinE last edited by

                                            @cvp
                                            Its the same...

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Powered by NodeBB Forums | Contributors