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.
    • 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
                                        • DavinE
                                          DavinE last edited by

                                          @cvp

                                          Do you know what protocol Pythonista use ?
                                          SMB1; SMB2; SMB3 ?

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

                                            @DavinE no idea.
                                            Your code works on my NAS

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