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

                                            @cvp

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

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