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 strange, I'll check, my smb connection works

      DavinE 1 Reply Last reply Reply Quote 0
      • 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
                                            • First post
                                              Last post
                                            Powered by NodeBB Forums | Contributors