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

                                          @cvp
                                          Which on do you have ? WD or ?

                                          and do you mean on your iPad ?

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

                                            @DavinE my NAS is a WD
                                            I work on an iPad. WitH your code.
                                            It also works with a flash drive connected in usb slot of my router, drive that I always reach in smb.

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