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

                                            Obviously, the smb module in Pythonista is old and is not identical as on your Radpberry.

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